133,15 → 133,15 |
/* Change task level */ |
if (lev->flag & NONESTAR_CHANGE_LEVEL) { |
STD_command_message msg; |
proc_table[p].status = SLEEP; |
|
if (lev->current!=NIL && lev->status!=NONESTAR_IDLE) |
if (lev->current!=NIL && lev->status!=NONESTAR_IDLE) { |
level_table[ lev->scheduling_level ]-> |
private_extract(lev->scheduling_level, p); |
|
} |
lev->current = NIL; |
lev->budget = -1; |
proc_table[p].task_level = lev->new_level[p]; |
lev->flag=0; |
|
/* Send change level command to local scheduler */ |
|
168,7 → 168,6 |
#ifdef NONESTAR_DEBUG |
kern_printf("(NN:Epi:%d)",p); |
#endif |
|
if (NONESTAR_change_level(l, p)) return; |
|
level_table[ lev->scheduling_level ] -> |
194,13 → 193,16 |
{ |
NONESTAR_level_des *lev = (NONESTAR_level_des *)(level_table[l]); |
BUDGET_TASK_MODEL b; |
|
TIME Q; |
budget_task_default_model(b, lev->budget); |
|
#ifdef NONESTAR_DEBUG |
kern_printf("(NN:Act:%d:%d)",p,lev->budget); |
#endif |
|
GRUBSTAR_getbudgetinfo(lev->scheduling_level, &Q, NULL, NULL, lev->budget); |
lev->server_Q=Q; |
proc_table[p].avail_time = lev->server_Q; |
proc_table[p].wcet = lev->server_Q; |
lev->status = NONESTAR_READY; |
|
level_table[ lev->scheduling_level ]-> |
214,12 → 216,12 |
BUDGET_TASK_MODEL b; |
|
#ifdef NONESTAR_DEBUG |
kern_printf("(NS:pu)"); |
kern_printf("(NS:pu %d)",p); |
#endif |
lev->current=p; |
|
budget_task_default_model(b, lev->budget); |
|
lev->status=NONESTAR_READY; |
level_table[ lev->scheduling_level ]-> |
private_insert(lev->scheduling_level, p, (TASK_MODEL *)&b); |
|
230,9 → 232,9 |
NONESTAR_level_des *lev = (NONESTAR_level_des *)(level_table[l]); |
|
#ifdef NONESTAR_DEBUG |
kern_printf("(NN:pb)"); |
kern_printf("(NN:pb %d)", p); |
#endif |
|
lev->status=NONESTAR_IDLE; |
/* the task is blocked on a synchronization primitive. we have to |
remove it from the master module -and- from the local queue! */ |
lev->current=NIL; |
282,7 → 284,6 |
case STD_SET_NEW_MODEL: |
/* if the NONESTAR_task_create is called, then the pclass must be a |
valid pclass. */ |
h=(DUMMY_TASK_MODEL *)(msg->param); |
|
/* now we know that m is a valid model */ |
lev->flag = 0; |
290,7 → 291,6 |
lev->status = NONESTAR_IDLE; |
|
|
|
break; |
|
case STD_SET_NEW_LEVEL: |
297,7 → 297,6 |
|
lev->flag |= NONESTAR_CHANGE_LEVEL; |
lev->new_level[p] = (int)(msg->param); |
|
break; |
|
case STD_ACTIVATE_TASK: |
305,7 → 304,6 |
/* Enable wcet check */ |
proc_table[p].avail_time = lev->server_Q; |
proc_table[p].wcet = lev->server_Q; |
//kern_printf("(NN:ActEcy:%d:%d)", p, lev->server_Q); |
proc_table[p].control = (proc_table[p].control & ~CONTROL_CAP); |
|
NONESTAR_public_activate(l, p, NULL); |
407,6 → 405,11 |
|
} |
|
int NONESTAR_get_current(LEVEL l) { |
NONESTAR_level_des *lev = (NONESTAR_level_des *)(level_table[l]); |
return lev->current; |
} |
|
int NONESTAR_get_remain_capacity(int budget) |
{ |
return SERVER_get_remain_capacity(fsf_get_server_level(),budget); |