Subversion Repositories shark

Compare Revisions

Ignore whitespace Rev 276 → Rev 277

/shark/trunk/ports/first/modules/grubstar.c
44,6 → 44,7
struct budget_struct {
TIME Q; /* budget */
TIME T; /* period */
bandwidth_t Ub; /* bandwidth */
 
struct timespec dline; /* deadline */
int dline_timer; /* oslib event for budget reactivation*/
105,11 → 106,8
if (b->avail > b->Q) b->avail = b->Q;
if (b->flags==GRUBSTAR_RECLAIMING && b->avail>0) {
bandwidth_t bw;
bw = (MAX_BANDWIDTH / b->T) * b->Q;
lev->Uf += b->Ub;
 
lev->Uf += bw;
 
#ifdef GRUBSTAR_DEBUG
kern_printf("BW=%ld, U=%u, Uf=%u",(long)bw, lev->U, lev->Uf);
#endif
166,19 → 164,13
 
b->vtimer = NIL;
if (b->current == NIL && iq_query_first(&(b->tasks)) == NIL && b->flags != GRUBSTAR_RECLAIMING) {
bandwidth_t bw;
 
b->flags=GRUBSTAR_RECLAIMING;
 
bw = (MAX_BANDWIDTH / b->T) * b->Q;
 
lev->Uf -= bw;
b->flags = GRUBSTAR_RECLAIMING;
lev->Uf -= b->Ub;
#ifdef GRUBSTAR_DEBUG
kern_printf("bw=%ld, U=%u, Uf=%u",(long)bw, lev->U, lev->Uf);
#endif
 
}
 
#ifdef GRUBSTAR_DEBUG
214,11 → 206,7
}
 
if (b->flags==GRUBSTAR_RECLAIMING) {
bandwidth_t bw;
bw = (MAX_BANDWIDTH / b->T) * b->Q;
 
lev->Uf += bw;
lev->Uf += b->Ub;
#ifdef grubSTAR_DEBUG
kern_printf("BW=%ld, U=%u, Uf=%u",(long)bw, lev->U, lev->Uf);
340,11 → 328,7
b->avail = b->Q;
 
if (b->flags == GRUBSTAR_RECLAIMING) {
bandwidth_t bw;
 
bw = (MAX_BANDWIDTH / b->T) * b->Q;
lev->Uf += bw;
 
lev->Uf += b->Ub;
}
 
b->flags = GRUBSTAR_ACTIVE;
531,14 → 515,8
case (long)(NULL):
 
if (b->current == NIL && iq_query_first(&(b->tasks)) == NIL && b->flags != GRUBSTAR_RECLAIMING) {
bandwidth_t bw;
b->flags = GRUBSTAR_RECLAIMING;
bw = (MAX_BANDWIDTH / b->T) * b->Q;
lev->Uf -= bw;
 
lev->Uf -= b->Ub;
}
 
break;
583,6 → 561,7
for (i=0; i<n; i++) {
lev->b[i].Q = 0;
lev->b[i].T = 0;
lev->b[i].Ub = 0;
NULL_TIMESPEC(&lev->b[i].dline);
lev->b[i].dline_timer = NIL;
lev->b[i].vtimer=NIL;
634,6 → 613,7
lev->b[r].Q = Q;
lev->b[r].T = T;
lev->b[r].Ub = b;
lev->b[r].avail = Q;
lev->b[r].flags = GRUBSTAR_ACTIVE;
lev->b[r].loc_sched_id = scheduler_id;
662,11 → 642,13
 
lev->b[budget].Q = 0;
lev->b[budget].T = 0;
lev->b[budget].Ub = 0;
NULL_TIMESPEC(&lev->b[budget].dline);
lev->b[budget].dline_timer = NIL;
lev->b[budget].avail = 0;
lev->b[budget].current = -1;
lev->b[budget].flags = GRUBSTAR_ACTIVE;
lev->b[budget].last_reclaiming = 0;
 
return 0;
 
679,6 → 661,7
 
lev->b[budget].Q = Q;
lev->b[budget].T = T;
lev->b[budget].Ub = (MAX_BANDWIDTH / T) * Q;
 
return 0;