plan 9 kernel history: overview | file list | diff list

1991/1101/port/sysfile.c (diff list | history)

1991/1018/sys/src/9/port/sysfile.c:268,2761991/1101/sys/src/9/port/sysfile.c:268,278 (short | long | prev | next)
1990/0227    
		n = unionread(c, (void*)arg[1], n); 
	else 
1991/0411    
		n = (*devtab[c->type].read)(c, (void*)arg[1], n, c->offset); 
1990/0227    
	c->offset += n; 
1991/0614    
	poperror(); 
1991/0411    
	qunlock(&c->rdl); 
1991/1101    
	poperror(); 
	lock(&c->offl); 
	c->offset += n; 
	unlock(&c->offl); 
1990/0227    
	return n; 
} 
 
1991/1018/sys/src/9/port/sysfile.c:291,2991991/1101/sys/src/9/port/sysfile.c:293,303
1990/11211    
	if(c->qid.path & CHDIR) 
		error(Eisdir); 
1991/0411    
	n = (*devtab[c->type].write)(c, (void*)arg[1], arg[2], c->offset); 
1990/0227    
	c->offset += n; 
1991/0614    
	poperror(); 
1991/0411    
	qunlock(&c->wrl); 
1991/1101    
	poperror(); 
	lock(&c->offl); 
	c->offset += n; 
	unlock(&c->offl); 
1990/0227    
	return n; 
} 
 
1991/1018/sys/src/9/port/sysfile.c:310,3291991/1101/sys/src/9/port/sysfile.c:314,330
1990/11211    
		error(Eisdir); 
1991/0319    
	if(devchar[c->type] == '|') 
		error(Eisstream); 
1991/0411    
	qlock(&c->rdl); 
	qlock(&c->wrl); 
1990/0227    
	if(waserror()){ 
1991/0411    
		qunlock(&c->rdl); 
		qunlock(&c->wrl); 
1990/0227    
		nexterror(); 
	} 
1991/1101    
	off = 0; 
1990/0227    
	switch(arg[2]){ 
	case 0: 
		c->offset = arg[1]; 
1991/1101    
		off = c->offset = arg[1]; 
1990/0227    
		break; 
 
	case 1: 
1991/1101    
		lock(&c->offl);	/* lock for read/write update */ 
1990/0227    
		c->offset += (long)arg[1]; 
1991/1101    
		off = c->offset; 
		unlock(&c->offl); 
1990/0227    
		break; 
 
	case 2: 
1991/1018/sys/src/9/port/sysfile.c:330,3411991/1101/sys/src/9/port/sysfile.c:331,339
1990/0227    
		(*devtab[c->type].stat)(c, buf); 
		convM2D(buf, &dir); 
		c->offset = dir.length + (long)arg[1]; 
1991/1101    
		off = c->offset; 
1990/0227    
		break; 
	} 
	off = c->offset; 
1991/0614    
	poperror(); 
1991/0411    
	qunlock(&c->rdl); 
	qunlock(&c->wrl); 
1990/0227    
	return off; 
} 
 


source code copyright © 1990-2005 Lucent Technologies; see license
Plan 9 distribution
comments to russ cox (rsc@swtch.com)