120,8 → 120,8 |
|
} CBSNHSTAR_level_des; |
|
extern bandwidth_t fsf_max_bw; |
|
|
static void CBSNHSTAR_activation(CBSNHSTAR_level_des *lev, |
PID p, |
struct timespec *acttime) |
169,7 → 169,7 |
ADDUSEC2TIMESPEC(b->D, &b->dline); |
b->avail=b->Q; |
b->flags=CBSNHSTAR_ACTIVE; |
kern_printf("((1)ds sec %ld, us %ld)", b->dline.tv_sec, b->dline.tv_nsec/1000); |
//kern_printf("((1)ds sec %ld, us %ld)", b->dline.tv_sec, b->dline.tv_nsec/1000); |
|
} |
|
203,9 → 203,9 |
|
b->avail -= tx; |
|
// #ifdef CBSNHSTAR_DEBUG |
#ifdef CBSNHSTAR_DEBUG |
kern_printf("(CS:Cap p%d av=%d tx=%d)", p, b->avail,tx); |
//#endif |
#endif |
|
/* |
if (b->avail <= 0) { |
235,13 → 235,15 |
b->N_D=0; |
} |
|
TIMESPEC_ASSIGN(&b->replenish, &schedule_time); |
|
ADDUSEC2TIMESPEC(b->T, &b->replenish); |
TIMESPEC_ASSIGN(&b->dline, &schedule_time); |
//TIMESPEC_ASSIGN(&b->dline, &schedule_time); |
ADDUSEC2TIMESPEC(b->D, &b->dline); |
b->avail=b->Q; |
b->flags=CBSNHSTAR_ACTIVE; |
#ifdef CBSNHSTAR_DEBUG |
kern_printf("((2)ds sec %ld, us %ld)", b->dline.tv_sec, b->dline.tv_nsec/1000); |
#endif |
} |
|
} |
312,7 → 314,9 |
TIMESPEC_ASSIGN(&b->dline, &b->replenish); |
ADDUSEC2TIMESPEC(b->D, &b->dline); |
ADDUSEC2TIMESPEC(b->T, &b->replenish); |
#ifdef CBSNHSTAR_DEBUG |
kern_printf("((3)ds sec %ld, us %ld)", b->dline.tv_sec, b->dline.tv_nsec/1000); |
#endif |
|
/* and the capacity */ |
b->avail = b->Q; |
567,9 → 571,9 |
CBSNHSTAR_level_des *lev = (CBSNHSTAR_level_des *)(level_table[l]); |
int r; |
|
// #ifdef CBSNHSTAR_DEBUG |
#ifdef CBSNHSTAR_DEBUG |
kern_printf("(CS:SetBud)"); |
//#endif |
#endif |
|
for (r = 0; r < lev->n; r++) |
if (lev->b[r].Q == 0) break; |
671,9 → 675,21 |
lev->b[budget].negotiation=1; |
} |
} else { |
/* Clamping */ |
bandwidth_t b; |
mul32div32to32(MAX_BANDWIDTH,lev->b[budget].Q,lev->b[budget].T,b); |
lev->U -= b; |
mul32div32to32(MAX_BANDWIDTH, Q, T, b); |
if (fsf_max_bw - lev->U < b) { |
b=fsf_max_bw - lev->U; |
mul32div32to32(b,T,MAX_BANDWIDTH,Q); |
|
} |
lev->b[budget].Q = Q; |
lev->b[budget].T = T; |
lev->b[budget].D = D; |
mul32div32to32(MAX_BANDWIDTH,lev->b[budget].Q,lev->b[budget].T,b); |
lev->U += b; |
} |
|
return 0; |