Subversion Repositories shark

Compare Revisions

Ignore whitespace Rev 850 → Rev 851

/shark/trunk/kernel/modules/edf.c
20,11 → 20,11
 
/**
------------
CVS : $Id: edf.c,v 1.19 2004-09-14 09:50:12 giacomo Exp $
CVS : $Id: edf.c,v 1.20 2004-09-15 11:44:11 giacomo Exp $
 
File: $File$
Revision: $Revision: 1.19 $
Last update: $Date: 2004-09-14 09:50:12 $
Revision: $Revision: 1.20 $
Last update: $Date: 2004-09-15 11:44:11 $
------------
 
This file contains the scheduling module EDF (Earliest Deadline First)
105,6 → 105,7
struct timespec adeadline; /* latest assigned deadline */
int dl_timer; /* deadline timer */
int eop_timer; /* end of period timer */
int off_timer; /* timer offset */
int dl_miss; /* deadline miss counter */
int wcet_miss; /* WCET miss counter */
int act_miss; /* activation miss counter */
185,8 → 186,13
PID p = (PID) par;
EDF_level_des *lev;
lev = (EDF_level_des *)level_table[proc_table[p].task_level];
EDF_task_des *td = &lev->tvec[p];
 
td->off_timer = -1;
 
/* release the task now */
EDF_intern_release(p, lev);
 
}
 
/* This function is called when a guest task misses its deadline */
200,7 → 206,9
 
TRACER_LOGEVENT(FTrace_EVT_task_deadline_miss,
(unsigned short int)proc_table[p].context,0);
 
kern_raise(XDEADLINE_MISS,p);
 
}
 
 
324,6 → 332,7
td->offset = h->offset;
td->dl_timer = -1;
td->eop_timer = -1;
td->off_timer = -1;
td->dl_miss = 0;
td->wcet_miss = 0;
td->act_miss = 0;
423,7 → 432,11
 
if (TIMESPEC_A_GT_B(&td->release, &clocktime)) {
/* release later, post an offset timer */
kern_event_post(&td->release,EDF_timer_offset,(void *)p);
if (td->off_timer != -1) {
kern_event_delete(td->off_timer);
td->off_timer = -1;
}
td->off_timer = kern_event_post(&td->release,EDF_timer_offset,(void *)p);
} else {
/* release now */
EDF_intern_release(p, lev);
646,6 → 659,7
{
LEVEL l; /* the level that we register */
EDF_level_des *lev; /* for readableness only */
int i;
 
printk("EDF_register_level\n");
 
688,6 → 702,18
 
lev->U = 0;
 
for (i=0;i<MAX_PROC;i++) {
EDF_task_des *td = &lev->tvec[i];
td->flags = 0;
td->dl_timer = -1;
td->eop_timer = -1;
td->off_timer = -1;
td->dl_miss = 0;
td->wcet_miss = 0;
td->act_miss = 0;
td->nact = 0;
}
 
return l;
}