~kris/9p

9hist

2d905c846029d1aefcede24d112af26f653a3f2e — David du Colombier 28 years ago 4cf72c7
Plan 9 from Bell Labs 1998-04-25
2 files changed, 20 insertions(+), 2 deletions(-)

M port/devproc.c
M port/proc.c
M port/devproc.c => port/devproc.c +18 -2
@@ 246,11 246,23 @@ procwstat(Chan *c, char *db)
}

static int
procfds(Fgrp *f, char *va, int count, long offset)
procfds(Proc *p, char *va, int count, long offset)
{
	Fgrp *f;
	Chan *c;
	int n, i;

	f = p->fgrp;
	if(f == nil)
		return 0;
	if(waserror()){
		unlock(f);
		qunlock(&p->debug);
		nexterror();
	}

	qlock(&p->debug);
	lock(f);
	n = 0;
	for(i = 0; i <= f->maxfd; i++) {
		c = f->fd[i];


@@ 273,6 285,10 @@ procfds(Fgrp *f, char *va, int count, long offset)
				n = 0;
		}
	}
	unlock(f);
	qunlock(&p->debug);
	poperror();

	return n;
}



@@ 519,7 535,7 @@ procread(Chan *c, void *va, long n, vlong off)
	case Qnoteid:
		return readnum(offset, va, n, p->noteid, NUMSIZE);
	case Qfd:
		return procfds(p->fgrp, va, n, offset);
		return procfds(p, va, n, offset);
	}
	error(Egreg);
	return 0;		/* not reached */

M port/proc.c => port/proc.c +2 -0
@@ 648,9 648,11 @@ pexit(char *exitstr, int freemem)
	up->alarm = 0;

	if(up->fgrp){
		qlock(&up->debug);
		fgrp = up->fgrp;
		up->fgrp = nil;
		closefgrp(fgrp);
		qunlock(&up->debug);
	}
	if(up->egrp)
		closeegrp(up->egrp);