257,7 → 257,7 |
static void POSIXSTAR_public_epilogue(LEVEL l, PID p) |
{ |
POSIXSTAR_level_des *lev = (POSIXSTAR_level_des *)(level_table[l]); |
|
|
#ifdef POSIXSTAR_DEBUG |
kern_printf("(PS:Epi:%d)",p); |
#endif |
275,24 → 275,32 |
lev->yielding = 0; |
iq_extract(p,&lev->ready[lev->priority[exec]]); |
iq_insertlast(p,&lev->ready[lev->priority[exec]]); |
} else { |
|
if (proc_table[exec].avail_time <= 0) { |
|
POSIXSTAR_private_scheduler(lev); |
|
if (exec==lev->activated) { |
level_table[lev->scheduling_level]->private_epilogue(lev->scheduling_level,p); |
} |
|
} else { |
|
level_table[lev->scheduling_level]->private_epilogue(lev->scheduling_level,p); |
|
} |
|
} |
/* check if the slice is finished and insert the task in the coPOSIXect |
qqueue position */ |
else if (proc_table[exec].avail_time <= 0) { |
|
POSIXSTAR_private_scheduler(lev); |
|
if (exec==lev->activated) |
level_table[lev->scheduling_level]->private_epilogue(lev->scheduling_level,p); |
} else { |
level_table[lev->scheduling_level]->private_epilogue(lev->scheduling_level,p); |
} |
|
proc_table[exec].status = POSIXSTAR_READY; |
proc_table[exec].status = POSIXSTAR_READY; |
|
} else |
level_table[proc_table[exec].task_level]->public_epilogue(proc_table[exec].task_level,p); |
|
} else { |
|
level_table[proc_table[exec].task_level]->public_epilogue(proc_table[exec].task_level,p); |
|
} |
|
} |
|
static void POSIXSTAR_internal_activate(POSIXSTAR_level_des *lev, PID p) |