Subversion Repositories shark

Compare Revisions

Ignore whitespace Rev 876 → Rev 877

/shark/trunk/ports/first/modules/edfstar.c
45,8 → 45,6
 
#include <tracer.h>
 
#define EDFSTAR_CHANGE_LEVEL 1
 
/* for iqueues */
/* #include "iqueue.h" Now iqueues are the only queue type available
into the kernel */
87,6 → 85,7
#define EDFSTAR_IDLE MODULE_STATUS_BASE+4 /* to wait the deadline */
 
/* flags */
#define EDFSTAR_CHANGE_LEVEL 8
#define EDFSTAR_FLAG_NOPREEMPT 4
#define EDFSTAR_FLAG_NORAISEEXC 2
#define EDFSTAR_FLAG_SPORADIC 1
236,9 → 235,14
/* Change task level */
if (lev->flag[p] & EDFSTAR_CHANGE_LEVEL) {
#ifdef EDFSTAR_DEBUG
edfstar_printf("(E:clev)");
#endif
STD_command_message msg;
proc_table[p].status = SLEEP;
lev->flag[p] &= ~ EDFSTAR_CHANGE_LEVEL;
level_table[lev->scheduling_level]->private_extract(lev->scheduling_level,p);
iq_extract(p,&lev->ready);
333,7 → 337,7
EDFSTAR_level_des *lev = (EDFSTAR_level_des *)(level_table[l]);
 
#ifdef EDFSTAR_DEBUG
edfstar_printf2("(E:eli)");
edfstar_printf2("(E:eli:%d)",p);
#endif
 
return level_table[ lev->scheduling_level ]->
579,11 → 583,14
/* if the EDFSTAR_task_create is called, then the pclass must be a
valid pclass. */
h=(HARD_TASK_MODEL *)(msg->param);
/* now we know that m is a valid model */
lev->wcet[p] = h->wcet;
lev->period[p] = h->mit;
 
#ifdef EDFSTAR_DEBUG
kern_printf("(EDF:NM p%d w%d m%d)", p, h->wcet, h->mit);
#endif
lev->flag[p] = 0;
lev->deadline_timer[p] = -1;
lev->dline_miss[p] = 0;
600,7 → 607,9
break;
 
case STD_ACTIVATE_TASK:
#ifdef EDFSTAR_DEBUG
kern_printf("(EDF:SA)");
#endif
/* Enable wcet check */
proc_table[p].avail_time = lev->wcet[p];
proc_table[p].wcet = lev->wcet[p];
716,7 → 725,7
EDFSTAR_level_des *lev = (EDFSTAR_level_des *)(level_table[l]);
 
#ifdef EDFSTAR_DEBUG
//kern_printf("EDFSTAR_guest_end: dline timer %d\n",lev->deadline_timer[p]);
kern_printf("EDFSTAR_guest_end: dline timer %d\n",lev->deadline_timer[p]);
#endif
 
iq_extract(p, &lev->ready);
724,7 → 733,7
/* we remove the deadline timer, because the slice is finished */
if (lev->deadline_timer[p] != NIL) {
#ifdef EDFSTAR_DEBUG
// kern_printf("EDFSTAR_guest_end: dline timer %d\n",lev->deadline_timer[p]);
kern_printf("EDFSTAR_guest_end: dline timer %d\n",lev->deadline_timer[p]);
#endif
kern_event_delete(lev->deadline_timer[p]);
lev->deadline_timer[p] = NIL;