19,10 → 19,10 |
#include <pthread.h> |
#include <stdlib.h> |
|
//#define FSF_DEBUG |
|
#define FSF_DEBUG |
int current=0; |
server_elem server_list[MAX_PROC]; |
server_elem server_list[FSF_MAX_N_SERVERS]; |
bandwidth_t fsf_max_bw = 0; |
|
int fsf_server_level; |
97,8 → 97,9 |
fsf_server_id_t server) |
{ |
TIME T,Q; |
#ifdef FSF_DEBUG |
int temp; |
#ifdef FSF_DEBUG |
|
kern_printf("(Link Server %d)",server); |
#endif |
|
197,13 → 198,17 |
#ifdef FSF_DEBUG |
kern_printf("(T %ld)", T); |
#endif |
if (T<=server_list[i].Tmax) |
if (T<=server_list[i].Tmax) { |
server_list[i].actual_budget = server_list[i].Cmin; |
server_list[i].actual_period = T; |
adjust_SERVER_budget(server_list[i].server,server_list[i].Cmin, T); |
else { |
} else { |
mul32div32to32(server_list[i].Tmax,server_list[i].U,MAX_BANDWIDTH,Q); |
#ifdef FSF_DEBUG |
kern_printf("(Q %ld)", Q); |
#endif |
server_list[i].actual_budget = Q; |
server_list[i].actual_period = server_list[i].Tmax; |
adjust_SERVER_budget(server_list[i].server,Q, server_list[i].Tmax); |
} |
|
405,11 → 410,12 |
int Qt; |
int isok=0; |
int i=0; |
int temp; |
|
#ifdef FSF_DEBUG |
kern_printf("(Recalculate contract)"); |
#endif |
#ifdef FSF_DEBUG |
int temp; |
|
kern_printf("(Recalculate contract)"); |
#endif |
|
/* The current bandwidth is the min bandwidth */ |
//current_bandwidth=SERVER_return_bandwidth(fsf_server_level); |
421,8 → 427,7 |
current_bandwidth=0; |
Qt=0; |
for (i=0; i<current; i++) { |
if (server_list[i].U>server_list[i].Umin |
&& server_list[i].Qs!=0) |
if (server_list[i].Qs!=0) |
Qt+=server_list[i].Qs; |
current_bandwidth+=server_list[i].U; |
} |
432,16 → 437,11 |
#endif |
isok=1; |
for (i=0; i<current; i++) { |
if (server_list[i].U>server_list[i].Umin && |
server_list[i].Qs!=0) { |
if (server_list[i].Qs!=0) { |
temp_U=server_list[i].U; |
temp_U=temp_U-(current_bandwidth-U)*server_list[i].Qs/Qt; |
#ifdef FSF_DEBUG |
mul32div32to32(temp_U,100, MAX_BANDWIDTH, temp); |
kern_printf("(Server %d bw %d)", server_list[i].server, temp); |
#endif |
|
if (temp_U<server_list[i].Umin) { |
|
if (temp_U<server_list[i].Umin) { |
server_list[i].U=server_list[i].Umin; |
isok=0; |
} else if (temp_U>=server_list[i].Umax) { |
487,3 → 487,17 |
return 0; |
} |
|
void print_server_list() |
{ |
|
int i; |
|
kern_printf("Server List\n"); |
|
for(i=0;i<current;i++) { |
|
kern_printf("[%d] Q:%d T:%d\n",server_list[i].server,(int)server_list[i].actual_budget,(int)server_list[i].actual_period); |
|
} |
|
} |