Subversion Repositories shark

Compare Revisions

Ignore whitespace Rev 960 → Rev 959

/shark/trunk/ports/first/modules/nonestar.c
133,15 → 133,15
/* Change task level */
if (lev->flag & NONESTAR_CHANGE_LEVEL) {
STD_command_message msg;
if (lev->current!=NIL && lev->status!=NONESTAR_IDLE) {
proc_table[p].status = SLEEP;
 
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,6 → 168,7
#ifdef NONESTAR_DEBUG
kern_printf("(NN:Epi:%d)",p);
#endif
 
if (NONESTAR_change_level(l, p)) return;
 
level_table[ lev->scheduling_level ] ->
193,16 → 194,13
{
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 ]->
216,12 → 214,12
BUDGET_TASK_MODEL b;
 
#ifdef NONESTAR_DEBUG
kern_printf("(NS:pu %d)",p);
kern_printf("(NS:pu)");
#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);
 
232,9 → 230,9
NONESTAR_level_des *lev = (NONESTAR_level_des *)(level_table[l]);
 
#ifdef NONESTAR_DEBUG
kern_printf("(NN:pb %d)", p);
kern_printf("(NN:pb)");
#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;
284,11 → 282,13
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;
lev->current = p;
lev->status = NONESTAR_IDLE;
 
break;
297,6 → 297,7
lev->flag |= NONESTAR_CHANGE_LEVEL;
lev->new_level[p] = (int)(msg->param);
break;
case STD_ACTIVATE_TASK:
303,8 → 304,9
/* Enable wcet check */
proc_table[p].avail_time = lev->server_Q;
proc_table[p].wcet = lev->server_Q;
proc_table[p].control = (proc_table[p].control & ~CONTROL_CAP);
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);
405,11 → 407,6
 
}
 
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);