| plan 9 kernel history: overview | file list | diff list |
1990/1110/port/pgrp.c (diff list | history)
| 1990/0928/sys/src/9/port/pgrp.c:7,12 – 1990/1110/sys/src/9/port/pgrp.c:7,13 (short | long | prev | next) | ||
| 1990/0227 | struct{ Lock; | |
| 1990/1110 | Pgrp *arena; | |
| 1990/0227 | Pgrp *free; ulong pgrpid; }pgrpalloc; | |
| 1990/0928/sys/src/9/port/pgrp.c:24,33 – 1990/1110/sys/src/9/port/pgrp.c:25,36 | ||
| 1990/0227 | Pgrp *p; Mount *m; | |
| 1990/1110 | pgrpalloc.arena = ialloc(conf.npgrp*sizeof(Pgrp), 0); pgrpalloc.free = pgrpalloc.arena; | |
| 1990/0227 | p = pgrpalloc.free; | |
| 1990/0825 | for(i=0; i<conf.npgrp; i++,p++){ | |
| 1990/1110 | p->index = i; | |
| 1990/0227 | p->next = p+1; p->mtab = ialloc(conf.nmtab*sizeof(Mtab), 0); p->etab = ialloc(conf.npgenv*sizeof(Envp*), 0); | |
| 1990/0928/sys/src/9/port/pgrp.c:43,48 – 1990/1110/sys/src/9/port/pgrp.c:46,88 | ||
| 1990/0227 | } Pgrp* | |
| 1990/1110 | pgrptab(int i) { return &pgrpalloc.arena[i]; } void pgrpnote(Pgrp *pg, char *a, long n, int flag) { int i; Proc *p; char buf[ERRLEN]; if(n >= ERRLEN-1) error(0, Etoobig); if(n>=4 && strncmp(a, "sys:", 4)==0) error(0, Ebadarg); memcpy(buf, a, n); buf[n] = 0; p = proctab(0); for(i=0; i<conf.nproc; i++, p++){ if(p->pgrp == pg){ lock(&p->debug); if(p->pid==0 || p->pgrp!=pg){ unlock(&p->debug); continue; } if(waserror()){ unlock(&p->debug); continue; } postnote(p, 0, buf, flag); unlock(&p->debug); } } } Pgrp* | |
| 1990/0227 | newpgrp(void) { Pgrp *p; | |
| 1990/0928/sys/src/9/port/pgrp.c:76,81 – 1990/1110/sys/src/9/port/pgrp.c:116,123 | ||
| 1990/0227 | Envp *ep; if(decref(p) == 0){ | |
| 1990/1110 | lock(&p->debug); p->pgrpid = -1; | |
| 1990/0227 | m = p->mtab; for(i=0; i<p->nmtab; i++,m++) if(m->c){ | |
| 1990/0928/sys/src/9/port/pgrp.c:89,94 – 1990/1110/sys/src/9/port/pgrp.c:131,137 | ||
| 1990/0227 | lock(&pgrpalloc); p->next = pgrpalloc.free; pgrpalloc.free = p; | |
| 1990/1110 | unlock(&p->debug); | |
| 1990/0227 | unlock(&pgrpalloc); } } | |