| plan 9 kernel history: overview | file list | diff list |
1992/0519/port/proc.c (diff list | history)
| 1992/0428/sys/src/9/port/proc.c:297,302 – 1992/0519/sys/src/9/port/proc.c:297,303 (short | long | prev | next) | ||
|
Add splhi calls to sleep, tsleep around checks of r->p. (BUG FIX?)
rsc Mon Mar 20 17:14:24 2006 | ||
| 1990/0227 | sleep(Rendez *r, int (*f)(void*), void *arg) { | |
| 1991/0727 | Proc *p; | |
| 1992/0519 | int s; | |
| 1991/0727 | p = u->p; | |
| 1990/0227 | sleep1(r, f, arg); | |
| 1992/0428/sys/src/9/port/proc.c:304,313 – 1992/0519/sys/src/9/port/proc.c:305,316 | ||
| 1991/0727 | sched(); /* notepending may go true while asleep */ if(p->notepending){ p->notepending = 0; | |
| 1992/0519 | s = splhi(); | |
| 1991/0805 | lock(r); if(r->p == p) r->p = 0; unlock(r); | |
| 1992/0519 | splx(s); | |
| 1990/11211 | error(Eintr); | |
| 1990/0227 | } } | |
| 1992/0428/sys/src/9/port/proc.c:317,322 – 1992/0519/sys/src/9/port/proc.c:320,326 | ||
| 1990/0227 | { Alarm *a; | |
| 1991/0727 | Proc *p; | |
| 1992/0519 | int s; | |
| 1990/0227 | ||
| 1991/0727 | p = u->p; | |
| 1990/0227 | sleep1(r, f, arg); | |
| 1992/0428/sys/src/9/port/proc.c:327,336 – 1992/0519/sys/src/9/port/proc.c:331,342 | ||
| 1991/0727 | } if(p->notepending){ p->notepending = 0; | |
| 1992/0519 | s = splhi(); | |
| 1991/0805 | lock(r); if(r->p == p) r->p = 0; unlock(r); | |
| 1992/0519 | splx(s); | |
| 1990/11211 | error(Eintr); | |
| 1990/0227 | } } | |