Subversion Repositories shark

Compare Revisions

Ignore whitespace Rev 744 → Rev 745

/shark/trunk/kernel/modules/elastic.c
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;
565,7 → 563,8
int ELASTIC_set_period(PID p, TIME period) {
 
SYS_FLAGS f;
int saveE;
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