| 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,256 – 1998/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 | |
| 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,278 – 1998/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,525 – 1998/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: | |
| 1998/0425 | return procfds(p, va, n, offset); | |
| 1990/0227 | } | |
| 1990/11211 | error(Egreg); | |
| 1992/0520 | return 0; /* not reached */ | |