138,7 → 138,7 |
|
static void EDFSTAR_check_preemption(EDFSTAR_level_des *lev) |
{ |
PID first; |
PID first=NIL; |
|
#ifdef EDFSTAR_DEBUG |
edfstar_printf("(E:chk)"); |
205,9 → 205,9 |
break; |
|
default: |
#ifdef EDFSTAR_DEBUG |
// #ifdef EDFSTAR_DEBUG |
kern_printf("(E:Dl:%d)",p); |
#endif |
// #endif |
/* else, a deadline miss occurred!!! */ |
lev->dline_miss[p]++; |
TRACER_LOGEVENT(FTrace_EVT_task_deadline_miss,proc_table[p].context,proc_table[p].task_level); |
317,6 → 317,7 |
/* Enable wcet check */ |
proc_table[p].avail_time = h->wcet; |
proc_table[p].wcet = h->wcet; |
proc_table[p].status = SLEEP; |
|
return 0; /* OK, also if the task cannot be guaranteed... */ |
} |
327,6 → 328,7 |
struct timespec ty; |
TIME tx; |
|
|
SUBTIMESPEC(&schedule_time, &lev->cap_lasttime, &ty); |
tx = TIMESPEC2USEC(&ty); |
|
412,7 → 414,7 |
level_table[ lev->scheduling_level ]-> |
private_epilogue(lev->scheduling_level,p); |
|
proc_table[exec].status = EDFSTAR_READY; |
proc_table[exec].status = EDFSTAR_READY; |
} else |
level_table[proc_table[exec].task_level]->public_epilogue(proc_table[exec].task_level,p); |
|
435,6 → 437,8 |
if (lev->flag[p] & EDFSTAR_FLAG_SPORADIC) { |
if (proc_table[p].status != EDFSTAR_IDLE) { |
lev->nact[p]++; |
//kern_printf("(Inc nact %d)",p); |
//kern_printf("(%d STATUS %d %ds %dns)", p, proc_table[p].status, o->tv_sec, o->tv_nsec/1000); |
return; |
} |
} else { |
522,8 → 526,8 |
if (lev->nact[p] > 0) { |
|
#ifdef EDFSTAR_DEBUG |
edfstar_printf2("E%d",p); |
#endif |
kern_printf("E%d",p); |
#endif |
|
/* Pending activation: reactivate the thread!!! */ |
lev->nact[p]--; |
640,7 → 644,10 |
#endif |
|
iq_extract(p,&lev->ready); |
level_table[ lev->scheduling_level ]-> |
private_extract(lev->scheduling_level, p); |
|
|
/* we finally put the task in the ready queue */ |
proc_table[p].status = FREE; |
|