181,6 → 181,7 |
|
ext_bandwidth_t Umin; // minimum utilization |
ext_bandwidth_t Umax; // nominal (maximum) utilization of compressable tasks |
unsigned int temp; |
|
ext_bandwidth_t Uf; // amount of non-compressable utilization |
int Ev; // sum of elasticity among compressable tasks |
260,9 → 261,8 |
if (et->flags & ELASTIC_PRESENT) { |
if (et->U != et->oldU) { |
/* Utilization has been changed. Compute new period */ |
// overflow here??? |
//et->T = ((long long)et->C * (long long)lev->c_scaling_factor * (long long)MAX_BANDWIDTH) / (et->U * (long long)SCALING_UNIT); |
et->T = ((long long)et->C * (long long)MAX_BANDWIDTH) / (long long)et->U; |
temp = (long long)et->C * (long long)MAX_BANDWIDTH / et->U; |
mul32div32to32(temp,lev->c_scaling_factor,SCALING_UNIT,et->T); |
} |
if (et->U < et->oldU) { |
/* Task has been compressed. Change its deadline NOW! */ |
326,6 → 326,7 |
ELASTIC_level_des *lev = (ELASTIC_level_des *)(level_table[l]); |
ELASTIC_TASK_MODEL *elastic = (ELASTIC_TASK_MODEL *)m; |
ELASTIC_task_descr *et = &lev->elist[p]; |
unsigned int temp; |
|
if (m->pclass != ELASTIC_PCLASS) return -1; |
if (m->level != 0 && m->level != l) return -1; |
342,13 → 343,10 |
et->E = elastic->E; |
et->beta = elastic->beta; |
|
// overflow here??? |
//et->Umax = ((long long)MAX_BANDWIDTH * (long long)elastic->C * (long long)lev->c_scaling_factor) / ((long long)elastic->Tmin * (long long)SCALING_UNIT); |
//et->Umin = ((long long)MAX_BANDWIDTH * (long long)elastic->C * (long long)lev->c_scaling_factor) / ((long long)elastic->Tmax * (long long)SCALING_UNIT); |
mul32div32to32(elastic->C,lev->c_scaling_factor,SCALING_UNIT,temp); |
et->Umax = ((long long)MAX_BANDWIDTH * (long long)temp) / (long long)elastic->Tmin; |
et->Umin = ((long long)MAX_BANDWIDTH * (long long)temp) / (long long)elastic->Tmax; |
|
et->Umax = ((long long)MAX_BANDWIDTH * (long long)elastic->C) / (long long)elastic->Tmin; |
et->Umin = ((long long)MAX_BANDWIDTH * (long long)elastic->C) / (long long)elastic->Tmax; |
|
et->U = et->Umax; |
et->oldU = 0; |
et->T = et->Tmin; |
566,6 → 564,7 |
|
SYS_FLAGS f; |
int saveE; |
unsigned int temp; |
ext_bandwidth_t saveU; |
|
f = kern_fsave(); |
578,7 → 577,8 |
saveU = et->U; |
|
et->E = 0; /* set elasticity to zero to force period */ |
et->U = ((long long)MAX_BANDWIDTH * (long long)et->C * (long long)lev->c_scaling_factor)/((long long)period * (long long)SCALING_UNIT); |
mul32div32to32(et->C,lev->c_scaling_factor,SCALING_UNIT,temp); |
et->U = ((long long)MAX_BANDWIDTH * (long long)(temp))/((long long)period); |
|
if (ELASTIC_compress(lev) == -1) { |
#ifdef ELASTIC_DEBUG |