118,7 → 118,7 |
} |
} |
|
if ((proc_table[p].control /* & CONTROL_CAP */) && |
if (/* (proc_table[p].control & CONTROL_CAP ) && */ |
(proc_table[p].avail_time <= 0)) { |
while (proc_table[p].avail_time<=0) |
proc_table[p].avail_time += proc_table[p].wcet; |
224,7 → 224,10 |
if (nrt->policy == NRT_RR_POLICY) { |
proc_table[p].control |= CONTROL_CAP; |
} |
*/ |
*/ |
#if defined POSIXSTAR_DEBUG |
kern_printf("(slice %d)", proc_table[p].wcet); |
#endif |
if (nrt->arrivals == SAVE_ARRIVALS) |
lev->nact[p] = 0; |
else |
254,10 → 257,7 |
|
/* ...and finally, we have to post a capacity event on exec task because the shadow_task consume |
* capacity on exe task always */ |
if (proc_table[p].avail_time<=proc_table[exec].avail_time) |
ADDUSEC2TIMESPEC(proc_table[p].avail_time ,&ty); |
else |
ADDUSEC2TIMESPEC(proc_table[exec].avail_time, &ty); |
ADDUSEC2TIMESPEC(proc_table[exec].avail_time, &ty); |
|
lev->cap_lev = kern_event_post(&ty,capacity_handler, lev); |
level_table[lev->scheduling_level]->private_dispatch(lev->scheduling_level, p, nostop); |
305,11 → 305,11 |
|
level_table[lev->scheduling_level]->private_epilogue(lev->scheduling_level,p); |
|
POSIXSTAR_private_scheduler(lev); |
//POSIXSTAR_private_scheduler(lev); |
|
} |
|
proc_table[p].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); |