| plan 9 kernel history: overview | file list | diff list |
2002/1218/port/edf.c (diff list | history)
| 2002/1218/sys/src/9/port/edf.c:427,440 – 2002/1219/sys/src/9/port/edf.c:427,437 (short | long | prev | next) | ||
| 2002/0327 | ||
| 2002/0328 | DPRINT("%d edfreleaseintr\n", m->machno); | |
| 2002/0327 | ||
| 2002/0410 |
| |
| 2002/0328 | ||
| 2002/0927 | if(panicking || active.exiting) | |
| 2002/0327 | return; | |
| 2002/0328 | now = fastticks(nil); | |
| 2002/1219 | ilock(&edflock); | |
| 2002/0327 | while((t = qwaitrelease.head) && t->r <= now){ /* There's something waiting to be released and its time has come */ edfdequeue(&qwaitrelease); | |
| 2002/1218/sys/src/9/port/edf.c:447,453 – 2002/1219/sys/src/9/port/edf.c:444,450 | ||
| 2002/0327 | } static void | |
| 2002/1001 |
| |
| 2002/1219 | edfdeadlineintr(Ureg*, Timer *) | |
| 2002/0327 | { | |
| 2002/0328 | /* Task reached deadline */ | |
| 2002/1218/sys/src/9/port/edf.c:460,478 – 2002/1219/sys/src/9/port/edf.c:457,471 | ||
| 2002/0315 | ||
| 2002/0327 | DPRINT("%d edfdeadlineintr\n", m->machno); | |
| 2002/1001 |
| |
| 2002/0328 | ||
| 2002/0927 | if(panicking || active.exiting) | |
| 2002/0327 | return; | |
| 2002/1219 | now = fastticks(nil); | |
| 2002/0327 | ilock(&edflock); | |
| 2002/0315 | // If up is not set, we're running inside the scheduler | |
| 2002/0927 | // for non-real-time processes. noted = 0; | |
| 2002/0315 | if (up && isedf(up)) { | |
| 2002/0328 |
| |
| 2002/0315 | t = up->task; | |
| 2002/1218 | assert(t->state == EdfRunning); | |
| 2002/1218/sys/src/9/port/edf.c:1075,1081 – 2002/1219/sys/src/9/port/edf.c:1068,1074 | ||
| 2002/0927 | if (t->curcsn) t->curcsn->S -= used; when = now + c->S; | |
| 2002/1219 | if (deadlinetimer[m->machno].when == 0 || when < deadlinetimer[m->machno].when){ | |
| 2002/0927 | deadlinetimer[m->machno].when = when; timeradd(&deadlinetimer[m->machno]); } | |