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

1998/0425/port/devproc.c (diff list | history)

1998/0319/sys/src/9/port/devproc.c:246,2561998/0425/sys/src/9/port/devproc.c:246,268 (short | long | prev | next)
Bug fix: lock p->debug while reading /proc/n/fd to avoid fgrp disappearing.
rsc Fri Mar 4 12:44:25 2005
1990/0227    
} 
 
1998/0310    
static int 
procfds(Fgrp *f, char *va, int count, long offset) 
1998/0425    
procfds(Proc *p, char *va, int count, long offset) 
1998/0310    
{ 
1998/0425    
	Fgrp *f; 
1998/0310    
	Chan *c; 
	int n, i; 
 
1998/0425    
	f = p->fgrp; 
	if(f == nil) 
		return 0; 
	if(waserror()){ 
		unlock(f); 
		qunlock(&p->debug); 
		nexterror(); 
	} 
 
	qlock(&p->debug); 
	lock(f); 
1998/0310    
	n = 0; 
	for(i = 0; i <= f->maxfd; i++) { 
		c = f->fd[i]; 
1998/0319/sys/src/9/port/devproc.c:273,2781998/0425/sys/src/9/port/devproc.c:285,294
1998/0310    
				n = 0; 
		} 
	} 
1998/0425    
	unlock(f); 
	qunlock(&p->debug); 
	poperror(); 
 
1998/0310    
	return n; 
} 
 
1998/0319/sys/src/9/port/devproc.c:519,5251998/0425/sys/src/9/port/devproc.c:535,541
1993/1018    
	case Qnoteid: 
		return readnum(offset, va, n, p->noteid, NUMSIZE); 
1998/0310    
	case Qfd: 
		return procfds(p->fgrp, va, n, offset); 
1998/0425    
		return procfds(p, va, n, offset); 
1990/0227    
	} 
1990/11211    
	error(Egreg); 
1992/0520    
	return 0;		/* not reached */ 


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