567,3 → 567,170 |
kern_frestore(f); |
return 0; |
} |
|
int ELASTIC_get_period(PID p) { |
|
SYS_FLAGS f; |
ELASTIC_level_des *lev; |
lev = (ELASTIC_level_des *)level_table[proc_table[p].task_level]; |
|
f = kern_fsave(); |
|
if (lev->elist[p].flags & ELASTIC_PRESENT) { |
|
kern_frestore(f); |
return lev->elist[p].T; |
|
} else { |
|
kern_frestore(f); |
return -1; |
|
} |
|
} |
|
int ELASTIC_set_E(PID p, int E) { |
|
SYS_FLAGS f; |
ELASTIC_level_des *lev = (ELASTIC_level_des *)level_table[proc_table[p].task_level]; |
ELASTIC_task_descr *et = &lev->elist[p]; |
int saveE; |
|
f = kern_fsave(); |
|
if (et->flags & ELASTIC_PRESENT) { |
|
saveE = et->E; |
|
et->E = E; |
if (ELASTIC_compress(lev) == -1) { |
#ifdef ELASTIC_DEBUG |
cprintf("ELASTIC_set_E failed: could not compress\n"); |
#endif |
et->E = saveE; |
kern_frestore(f); |
return -1; |
|
} |
|
kern_frestore(f); |
return 0; |
|
} else { |
|
kern_frestore(f); |
return -1; |
|
} |
|
} |
|
int ELASTIC_get_E(PID p) { |
|
SYS_FLAGS f; |
ELASTIC_level_des *lev; |
lev = (ELASTIC_level_des *)level_table[proc_table[p].task_level]; |
|
f = kern_fsave(); |
|
if (lev->elist[p].flags & ELASTIC_PRESENT) { |
|
kern_frestore(f); |
return lev->elist[p].E; |
|
} else { |
|
kern_frestore(f); |
return -1; |
|
} |
|
} |
|
int ELASTIC_set_beta(PID p, int beta) { |
|
SYS_FLAGS f; |
ELASTIC_level_des *lev = (ELASTIC_level_des *)level_table[proc_table[p].task_level]; |
ELASTIC_task_descr *et = &lev->elist[p]; |
int saveBeta; |
|
f = kern_fsave(); |
|
if (et->flags & ELASTIC_PRESENT) { |
|
saveBeta = et->beta; |
|
et->beta = beta; |
if (ELASTIC_compress(lev) == -1) { |
#ifdef ELASTIC_DEBUG |
cprintf("ELASTIC_set_beta failed: could not compress\n"); |
#endif |
et->beta = saveBeta; |
kern_frestore(f); |
return -1; |
|
} |
|
kern_frestore(f); |
return 0; |
|
} else { |
|
kern_frestore(f); |
return -1; |
|
} |
|
} |
|
int ELASTIC_get_beta(PID p) { |
|
SYS_FLAGS f; |
ELASTIC_level_des *lev = (ELASTIC_level_des *)level_table[proc_table[p].task_level]; |
|
f = kern_fsave(); |
|
if (lev->elist[p].flags & ELASTIC_PRESENT) { |
|
kern_frestore(f); |
return lev->elist[p].beta; |
|
} else { |
|
kern_frestore(f); |
return -1; |
|
} |
|
} |
|
int ELASTIC_set_bandwidth(LEVEL level, ext_bandwidth_t U) { |
|
SYS_FLAGS f; |
ELASTIC_level_des *lev = (ELASTIC_level_des *)level_table[level]; |
|
f = kern_fsave(); |
|
lev->U = U; |
|
if (ELASTIC_compress(lev) == -1) { |
#ifdef ELASTIC_DEBUG |
cprintf("ELASTIC_set_bandwidth failed: could not compress\n"); |
#endif |
kern_frestore(f); |
return -1; |
} |
|
kern_frestore(f); |
return 0; |
|
} |
|
ext_bandwidth_t ELASTIC_get_bandwidth(LEVEL level) { |
|
ELASTIC_level_des *lev = (ELASTIC_level_des *)level_table[level];; |
|
return lev->U; |
|
} |