From 5568fd92c4aa56d28699031538af2fe491cd1f2a Mon Sep 17 00:00:00 2001 From: David du Colombier <0intro@gmail.com> Date: Tue, 1 Oct 2002 00:00:00 +0000 Subject: [PATCH] Plan 9 from Bell Labs 2002-10-01 --- port/edf.c | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/port/edf.c b/port/edf.c index 42a134bb85687439ce7e4b8173d37ae460cea706..1d5e2c58098b2174839de2d4c7635baaa199d6c6 100644 --- a/port/edf.c +++ b/port/edf.c @@ -64,12 +64,13 @@ static Task *qschedulability; void (*devrt)(Task*, Ticks, int); -static void edfresched(Task *t); +static void edfresched(Task*); static void setdelta(void); -static void testdelta(Task *thetask); -static void edfreleaseintr(Ureg *, Timer *cy); +static void testdelta(Task*); +static void edfreleaseintr(Ureg*, Timer*); static void edfdeadlineintr(Ureg*, Timer*); -static char * edftestschedulability(Task *thetask); +static char * edftestschedulability(Task*); +static void resrelease(Task*); static void edfinit(void) @@ -449,7 +450,7 @@ edfreleaseintr(Ureg*, Timer*) } static void -edfdeadlineintr(Ureg*, Timer*) +edfdeadlineintr(Ureg*, Timer *timer) { /* Task reached deadline */ @@ -462,8 +463,8 @@ edfdeadlineintr(Ureg*, Timer*) DPRINT("%d edfdeadlineintr\n", m->machno); - timerdel(&deadlinetimer[m->machno]); - deadlinetimer[m->machno].when = 0; + if (timer) + timer->when = 0; if(panicking || active.exiting) return; @@ -486,6 +487,7 @@ edfdeadlineintr(Ureg*, Timer*) if (t->curcsn){ if (t->curcsn->S <= used){ t->curcsn->S = 0LL; + resrelease(t); r = t->curcsn->i; noted++; snprint(buf, sizeof buf, "sys: deadline miss: resource %s", r->name); @@ -1083,6 +1085,7 @@ resacquire(Task *t, CSN *c) } t->Delta = c->Delta; t->curcsn = c; + if(devrt) devrt(t, now, SResacq); /* priority is going up, no need to reschedule */ } @@ -1113,6 +1116,7 @@ resrelease(Task *t) }else t->Delta = Infinity; c->S = 0LL; /* don't allow reuse */ + if(devrt) devrt(t, now, SResrel); if (deadlinetimer[m->machno].when) timerdel(&deadlinetimer[m->machno]); deadlinetimer[m->machno].when = when;