Subversion Repositories shark

Compare Revisions

Ignore whitespace Rev 707 → Rev 708

/shark/trunk/kernel/modules/elastic.c
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;
}
/shark/trunk/include/modules/elastic.h
48,6 → 48,16
LEVEL ELASTIC_register_level(int flags, LEVEL master, ext_bandwidth_t U);
 
int ELASTIC_set_period(PID p, TIME period);
int ELASTIC_get_period(PID p);
 
int ELASTIC_set_E(PID p, int E);
int ELASTIC_get_E(PID p);
 
int ELASTIC_set_beta(PID p, int beta);
int ELASTIC_get_beta(PID p);
 
int ELASTIC_set_bandwidth(LEVEL lev, ext_bandwidth_t);
ext_bandwidth_t ELASTIC_get_bandwidth(LEVEL lev);
 
__END_DECLS
#endif