23,16 → 23,15 |
#define FSF_DEBUG |
int current=0; |
server_elem server_list[MAX_PROC]; |
bandwidth_t fsf_max_bw = 0; |
bandwidth_t min_bandwidth=0; |
|
int fsf_server_level; |
|
int FSF_register_module(int server_level, bandwidth_t max_bw) |
int FSF_register_module(int server_level) |
{ |
printk("FSF Module\n"); |
current=0; |
fsf_server_level = server_level; |
fsf_max_bw = max_bw; |
|
return 0; |
|
116,6 → 115,7 |
server_list[current].Cmin=Q; |
|
mul32div32to32(MAX_BANDWIDTH,Q,T,server_list[current].Umin); |
min_bandwidth+=server_list[current].Umin; |
server_list[current].U=server_list[current].Umax; |
|
#ifdef FSF_DEBUG |
143,8 → 143,10 |
// compress the array; |
while (i<(current-1)) { |
server_list[i].server=server_list[i+1].server; |
TIMESPEC_ASSIGN(&(server_list[i+1].budget_actual), &(server_list[i].budget_actual)); |
TIMESPEC_ASSIGN(&(server_list[i+1].period_actual), &(server_list[i].period_actual)); |
server_list[i].Umin=server_list[i+1].Umin; |
server_list[i].U=server_list[i+1].Umax; |
server_list[i].U=server_list[i+1].U; |
server_list[i].Umax=server_list[i+1].Umax; |
server_list[i].Cmin=server_list[i+1].Cmin; |
server_list[i].Tmax=server_list[i+1].Tmax; |
185,7 → 187,7 |
|
if (*server >= 0) { |
link_contract_to_server(contract,*server); |
if (recalculate_contract(fsf_max_bw)==-1) { |
if (recalculate_contract(MAX_BANDWIDTH)==-1) { |
kern_frestore(f); |
return FSF_ERR_CREATE_SERVER; |
} |
392,7 → 394,7 |
|
remove_contract(*server); |
|
recalculate_contract(fsf_max_bw); |
recalculate_contract(MAX_BANDWIDTH); |
|
*server = -1; |
|
466,6 → 468,7 |
fsf_server_id_t server) |
{ |
SYS_FLAGS f; |
int i=0; |
#ifdef FSF_DEBUG |
kern_printf("(Renegotiate for server %d)",server); |
#endif |
478,11 → 481,14 |
// compute the new value |
// |
f = kern_fsave(); |
if (recalculate_contract(fsf_max_bw)==-1) { |
if (recalculate_contract(MAX_BANDWIDTH)==-1) { |
kern_frestore(f); |
return FSF_ERR_CREATE_SERVER; |
} |
|
/* |
for (i=0; i<current; i++) |
adjust_SERVER_budget(server_list[i].server,server_list[i].budget_actual, server_list[i].period_actual); |
*/ |
kern_frestore(f); |
return 0; |
} |