61,6 → 61,8 |
TIME next_time; |
TIME capacity; |
|
struct timespec act_time; |
|
int avail; |
|
int replenish_timer; |
158,7 → 160,8 |
INTDRIVE_level_des *lev = (INTDRIVE_level_des *)(level_table[l]); |
struct timespec time; |
|
kern_gettime(&time); |
kern_gettime(&(lev->act_time)); |
TIMESPEC_ASSIGN(&time,&(lev->act_time)); |
ADDUSEC2TIMESPEC(proc_table[INTDRIVE_task].wcet,&time); |
|
lev->wcet_timer = kern_event_post(&time,INTDRIVE_wcet_timer,(void *)lev); |
176,7 → 179,7 |
if (lev->wcet_timer != NIL) |
kern_event_delete(lev->wcet_timer); |
|
SUBTIMESPEC(&schedule_time, &cap_lasttime, &time); |
SUBTIMESPEC(&schedule_time, &(lev->act_time), &time); |
temp = TIMESPEC2USEC(&time); |
|
lev->avail -= temp; |
236,7 → 239,7 |
if (lev->wcet_timer != NIL) |
kern_event_delete(lev->wcet_timer); |
|
SUBTIMESPEC(&schedule_time, &cap_lasttime, &time); |
SUBTIMESPEC(&schedule_time, &(lev->act_time), &time); |
temp = TIMESPEC2USEC(&time); |
|
lev->avail -= temp; |
280,9 → 283,8 |
} |
} |
|
jet_update_endcycle(); /* Update the Jet data... */ |
return 0; |
|
return 0; |
} |
|
static void INTDRIVE_public_end(LEVEL l, PID p) |
323,6 → 325,8 |
lev->l.public_block = INTDRIVE_public_block; |
lev->l.public_message = INTDRIVE_public_message; |
|
NULL_TIMESPEC(&(lev->act_time)); |
|
lev->capacity = capacity; |
lev->replenish_period = replenish_period; |
lev->next_time = replenish_period; |
330,6 → 334,7 |
lev->wcet_timer = NIL; |
lev->flags = flags; |
lev->act_number = 0; |
lev->avail = capacity; |
mul32div32to32(MAX_BANDWIDTH,lev->capacity,lev->replenish_period,lev->U); |
|
return l; |