19,7 → 19,7 |
#include <pthread.h> |
#include <stdlib.h> |
|
#define FSF_DEBUG |
//#define FSF_DEBUG |
|
int current_server=0; |
server_elem server_list[FSF_MAX_N_SERVERS]; |
115,9 → 115,12 |
Q=TIMESPEC2USEC(&contract->budget_max); |
mul32div32to32(MAX_BANDWIDTH,Q,T,server_list[current_server].Umax); |
|
T=TIMESPEC2USEC(&contract->period_min); |
server_list[i].Tmin=T; |
|
T=TIMESPEC2USEC(&contract->period_max); |
server_list[i].Tmax=T; |
|
|
Q=TIMESPEC2USEC(&contract->budget_min); |
server_list[i].Cmin=Q; |
|
152,6 → 155,9 |
Q=TIMESPEC2USEC(&contract->budget_max); |
mul32div32to32(MAX_BANDWIDTH,Q,T,server_list[current_server].Umax); |
|
T=TIMESPEC2USEC(&contract->period_min); |
server_list[current_server].Tmin=T; |
|
T=TIMESPEC2USEC(&contract->period_max); |
server_list[current_server].Tmax=T; |
|
190,8 → 196,10 |
server_list[i].U=server_list[i+1].Umin; |
server_list[i].Umax=server_list[i+1].Umax; |
server_list[i].Cmin=server_list[i+1].Cmin; |
server_list[i].Tmin=server_list[i+1].Tmin; |
server_list[i].Tmax=server_list[i+1].Tmax; |
server_list[i].Qs=server_list[i+1].Qs; |
|
i++; |
} |
current_server--; |
237,24 → 245,28 |
#endif |
for (i=0; i<current_server; i++) { |
mul32div32to32(MAX_BANDWIDTH,server_list[i].Cmin,server_list[i].U,T); |
if (T > server_list[i].Tmin ) { |
server_list[i].actual_budget = server_list[i].Cmin; |
server_list[i].actual_period = T; |
#ifdef FSF_DEBUG |
kern_printf("(T %ld)", T); |
kern_printf("(1 - Q %ld T %ld)", server_list[i].actual_budget, server_list[i].actual_period); |
#endif |
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 { |
mul32div32to32(server_list[i].Tmax,server_list[i].U,MAX_BANDWIDTH,Q); |
#ifdef FSF_DEBUG |
kern_printf("(Q %ld)", Q); |
#endif |
mul32div32to32(server_list[i].Tmin,server_list[i].U,MAX_BANDWIDTH,Q); |
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); |
server_list[i].actual_period = server_list[i].Tmin; |
#ifdef FSF_DEBUG |
kern_printf("(2 - Q %ld T %ld)", server_list[i].actual_budget, server_list[i].actual_period); |
#endif |
|
adjust_SERVER_budget(server_list[i].server,Q, server_list[i].Tmin); |
} |
server_list[i].U=server_list[i].Umin; |
|
|
server_list[i].U=server_list[i].Umin; |
|
} |
} |
else { |
453,21 → 465,23 |
#endif |
for (i=0; i<current_server; i++) { |
mul32div32to32(MAX_BANDWIDTH,server_list[i].Cmin,server_list[i].U,T); |
#ifdef FSF_DEBUG |
kern_printf("(T %ld)", T); |
#endif |
if (T<=server_list[i].Tmax) { |
if (T > server_list[i].Tmin ) { |
server_list[i].actual_budget = server_list[i].Cmin; |
server_list[i].actual_period = T; |
#ifdef FSF_DEBUG |
kern_printf("(1 - Q %ld T %ld)", server_list[i].actual_budget, server_list[i].actual_period); |
#endif |
|
adjust_SERVER_budget(server_list[i].server,server_list[i].Cmin, T); |
} else { |
mul32div32to32(server_list[i].Tmax,server_list[i].U,MAX_BANDWIDTH,Q); |
#ifdef FSF_DEBUG |
kern_printf("(Q %ld)", Q); |
#endif |
mul32div32to32(server_list[i].Tmin,server_list[i].U,MAX_BANDWIDTH,Q); |
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); |
server_list[i].actual_period = server_list[i].Tmin; |
#ifdef FSF_DEBUG |
kern_printf("(2 - Q %ld T %ld)", server_list[i].actual_budget, server_list[i].actual_period); |
#endif |
|
adjust_SERVER_budget(server_list[i].server,Q, server_list[i].Tmin); |
} |
server_list[i].U=server_list[i].Umin; |
|
567,23 → 581,26 |
} |
|
for (i=0; i<current_server; i++) { |
mul32div32to32(MAX_BANDWIDTH,server_list[i].Cmin,server_list[i].U,T); |
#ifdef FSF_DEBUG |
kern_printf("(T %ld)", T); |
#endif |
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 { |
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); |
mul32div32to32(MAX_BANDWIDTH,server_list[i].Cmin,server_list[i].U,T); |
if (T > server_list[i].Tmin ) { |
server_list[i].actual_budget = server_list[i].Cmin; |
server_list[i].actual_period = T; |
#ifdef FSF_DEBUG |
kern_printf("(1 - Q %ld T %ld)", server_list[i].actual_budget, server_list[i].actual_period); |
#endif |
|
adjust_SERVER_budget(server_list[i].server,server_list[i].Cmin, T); |
} else { |
mul32div32to32(server_list[i].Tmin,server_list[i].U,MAX_BANDWIDTH,Q); |
server_list[i].actual_budget = Q; |
server_list[i].actual_period = server_list[i].Tmin; |
#ifdef FSF_DEBUG |
kern_printf("(2 - Q %ld T %ld)", server_list[i].actual_budget, server_list[i].actual_period); |
#endif |
|
adjust_SERVER_budget(server_list[i].server,Q, server_list[i].Tmin); |
} |
|
server_list[i].U=server_list[i].Umin; |
} |
kern_frestore(f); |