| plan 9 kernel history: overview | file list | diff list |
1990/1212/port/proc.c (diff list | history)
| 1990/1211/sys/src/9/port/proc.c:59,65 – 1990/1212/sys/src/9/port/proc.c:59,64 (short | long | prev | next) | ||
|
Move unusepage out of sched (deadlock BUG FIX). Rename save, restore to procsave, procrestore. Set p->kp for kprocs.
rsc Mon Mar 20 17:14:06 2006 | ||
| 1990/0227 | else if(p->state == Moribund){ p->pid = 0; unlock(&p->debug); | |
| 1990/0801 |
| |
| 1990/0227 | p->upage->ref--; /* procalloc already locked */ p->qnext = procalloc.free; | |
| 1990/1211/sys/src/9/port/proc.c:83,95 – 1990/1212/sys/src/9/port/proc.c:82,94 | ||
| 1990/0227 | if(u){ splhi(); | |
| 1990/1211 |
| |
| 1990/1212 | procsave(procstate, sizeof(procstate)); | |
| 1990/0227 | if(setlabel(&u->p->sched)){ /* woke up */ p = u->p; p->state = Running; p->mach = m; m->proc = p; | |
| 1990/1211 |
| |
| 1990/1212 | procrestore(p, procstate); | |
| 1990/0227 | spllo(); return; } | |
| 1990/1211/sys/src/9/port/proc.c:481,486 – 1990/1212/sys/src/9/port/proc.c:480,486 | ||
| 1990/03081 | ||
| 1990/0227 | lock(&procalloc); /* sched() can't do this */ | |
| 1990/03081 | lock(&c->debug); /* sched() can't do this */ | |
| 1990/1212 | unusepage(c->upage, 1); /* sched() can't do this (it locks) */ | |
| 1990/03081 | c->state = Moribund; | |
| 1990/0227 | sched(); /* never returns */ } | |
| 1990/1211/sys/src/9/port/proc.c:567,572 – 1990/1212/sys/src/9/port/proc.c:567,573 | ||
| 1990/0227 | * Kernel stack */ p = newproc(); | |
| 1990/1212 | p->kp = 1; | |
| 1990/0227 | p->upage = newpage(1, 0, USERADDR|(p->pid&0xFFFF)); | |
| 1990/0617 | k = kmap(p->upage); upa = VA(k); | |