| plan 9 kernel history: overview | file list | diff list |
1991/0807/port/sysproc.c (diff list | history)
| 1991/0806/sys/src/9/port/sysproc.c:9,14 – 1991/0807/sys/src/9/port/sysproc.c:9,15 (short | long | prev | next) | ||
| 1990/0330 | #include <a.out.h> | |
| 1990/0227 | int shargs(char*, int, char**); | |
| 1991/0807 | long rfork(ulong); | |
| 1990/0227 | long sysr1(ulong *arg) | |
| 1991/0806/sys/src/9/port/sysproc.c:20,25 – 1991/0807/sys/src/9/port/sysproc.c:21,39 | ||
| 1990/0227 | long sysfork(ulong *arg) { | |
| 1991/0807 | return rfork(Forkfd|Forkeg|Forkpg); } /* This call will obsolete fork */ long sysrfork(ulong *arg) { return rfork(arg[0]); } long rfork(ulong flag) { | |
| 1990/0227 | Proc *p; | |
| 1991/0705 | Segment *s; | |
| 1990/0227 | Page *np, *op; | |
| 1991/0806/sys/src/9/port/sysproc.c:27,33 – 1991/0807/sys/src/9/port/sysproc.c:41,50 | ||
| 1990/0227 | Chan *c; | |
| 1990/0614 | KMap *k; | |
| 1990/0227 | int n, on, i; | |
| 1991/0807 | /* * used to compute last valid system stack address for copy */ int lastvar; | |
| 1991/0709 | ||
| 1990/0227 | p = newproc(); | |
| 1991/0705 | ||
| 1991/0806/sys/src/9/port/sysproc.c:56,69 – 1991/0807/sys/src/9/port/sysproc.c:73,104 | ||
| 1990/0227 | * Refs */ | |
| 1991/0705 | incref(u->dot); /* File descriptors etc. */ | |
| 1991/0807 | if(flag & Forkfd) p->fgrp = dupfgrp(u->p->fgrp); else { p->fgrp = u->p->fgrp; incref(p->fgrp); } | |
| 1991/0705 |
| |
| 1991/0807 | if(flag & Forkpg) { p->pgrp = u->p->pgrp; /* Process groups */ incref(p->pgrp); } else { p->pgrp = newpgrp(); pgrpcpy(p->pgrp, u->p->pgrp); } | |
| 1991/0705 | ||
| 1991/0807 | if(flag & Forkeg) { p->egrp = u->p->egrp; /* Environment group */ incref(p->egrp); } else { p->egrp = newegrp(); envcpy(p->egrp, u->p->egrp); } | |
| 1990/0227 | /* * Sched */ | |
| 1991/0806/sys/src/9/port/sysproc.c:580,587 – 1991/0807/sys/src/9/port/sysproc.c:615,622 | ||
| 1991/0806 | val = p->rendval; p->rendval = arg[1]; | |
| 1991/0807 | while(p->state != Rendezvous) ; | |
| 1991/0806 | ready(p); unlock(u->p->pgrp); return val; | |
| 1991/0806/sys/src/9/port/sysproc.c:596,604 – 1991/0807/sys/src/9/port/sysproc.c:631,638 | ||
| 1991/0806 | p->rendhash = *l; *l = p; | |
| 1991/0807 | unlock(p->pgrp); | |
| 1991/0806 | u->p->state = Rendezvous; sched(); splx(s); | |