20,11 → 20,11 |
|
/** |
------------ |
CVS : $Id: edf.c,v 1.16 2004-06-21 11:22:05 anton Exp $ |
CVS : $Id: edf.c,v 1.17 2004-09-09 13:13:21 giacomo Exp $ |
|
File: $File$ |
Revision: $Revision: 1.16 $ |
Last update: $Date: 2004-06-21 11:22:05 $ |
Revision: $Revision: 1.17 $ |
Last update: $Date: 2004-09-09 13:13:21 $ |
------------ |
|
This file contains the scheduling module EDF (Earliest Deadline First) |
62,7 → 62,7 |
#include <kernel/func.h> |
#include <tracer.h> |
|
//#define EDF_DEBUG |
#define EDF_DEBUG |
#define edf_printf kern_printf |
#ifdef EDF_DEBUG |
char *pnow() { |
167,6 → 167,8 |
EDF_level_des *lev = (EDF_level_des *)level_table[proc_table[p].task_level]; |
EDF_task_des *td = &lev->tvec[p]; |
|
td->dl_timer = -1; |
|
TRACER_LOGEVENT(FTrace_EVT_task_deadline_miss, |
(unsigned short int)proc_table[p].context,0); |
|
191,6 → 193,11 |
static void EDF_timer_guest_deadline(void *par) |
{ |
PID p = (PID) par; |
EDF_level_des *lev = (EDF_level_des *)level_table[proc_table[p].task_level]; |
EDF_task_des *td = &lev->tvec[p]; |
|
td->dl_timer = -1; |
|
TRACER_LOGEVENT(FTrace_EVT_task_deadline_miss, |
(unsigned short int)proc_table[p].context,0); |
kern_raise(XDEADLINE_MISS,p); |
209,6 → 216,10 |
if (lev->flags & EDF_ENABLE_DL_CHECK) { |
temp = td->release; |
ADDUSEC2TIMESPEC(td->rdeadline, &temp); |
if (td->dl_timer != -1) { |
kern_event_delete(td->dl_timer); |
td->dl_timer = -1; |
} |
td->dl_timer = kern_event_post(&temp,EDF_timer_deadline,(void *)p); |
} |
|
572,7 → 583,10 |
iq_timespec_insert(p,&lev->ready); |
proc_table[p].status = EDF_READY; |
|
td->dl_timer = -1; |
if (td->dl_timer != -1) { |
kern_event_delete(td->dl_timer); |
td->dl_timer = -1; |
} |
|
td->period = job->period; |
|