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

1992/0520/port/devsrv.c (diff list | history)

1992/0321/sys/src/9/port/devsrv.c:127,1321992/0520/sys/src/9/port/devsrv.c:127,133 (short | long | prev | next)
1992/0114    
		exhausted("server slots"); 
1991/1219    
	sp = &srv[j]; 
	sp->chan = c; 
1992/0520    
	incref(c); 
1991/1219    
	unlock(&srvlk); 
1990/1002    
	poperror(); 
1991/1219    
	strncpy(sp->name, name, NAMELEN); 
1992/0321/sys/src/9/port/devsrv.c:188,1971992/0520/sys/src/9/port/devsrv.c:189,196
1991/1127    
	Fgrp *f; 
1990/0227    
	int i, fd; 
	char buf[32]; 
1992/0520    
	Chan *c1; 
1990/0227    
 
1991/0828    
	i = c->qid.path; 
1991/1219    
	if(srv[i].chan != c)	/* already been written to */ 
1990/11211    
		error(Egreg); 
1990/1110    
	if(n >= sizeof buf) 
1990/11211    
		error(Egreg); 
1991/0318    
	memmove(buf, va, n);	/* so we can NUL-terminate */ 
1992/0321/sys/src/9/port/devsrv.c:198,2031992/0520/sys/src/9/port/devsrv.c:197,203
1990/0227    
	buf[n] = 0; 
	fd = strtoul(buf, 0, 0); 
1991/1127    
	f = u->p->fgrp; 
1992/0520    
 
1991/1127    
	lock(f); 
1992/0226    
	if(waserror()){ 
		unlock(f); 
1992/0321/sys/src/9/port/devsrv.c:204,2121992/0520/sys/src/9/port/devsrv.c:204,226
1992/0226    
		nexterror(); 
	} 
1991/1011    
	fdtochan(fd, -1, 0);	/* error check only */ 
1991/1219    
	srv[i].chan = f->fd[fd]; 
	incref(srv[i].chan); 
1992/0520    
	c1 = f->fd[fd]; 
	incref(c1); 
1991/1127    
	unlock(f); 
1992/0520    
	poperror(); 
 
	lock(&srvlk); 
	if (waserror()) { 
		unlock(&srvlk); 
		close(c1); 
		nexterror(); 
	} 
	i = c->qid.path; 
	if(srv[i].chan != c)	/* already been written to */ 
		error(Egreg); 
	close(c); 
	srv[i].chan = c1; 
	unlock(&srvlk); 
1992/0226    
	poperror(); 
1990/0227    
	return n; 
} 


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