Subversion Repositories shark

Compare Revisions

Ignore whitespace Rev 416 → Rev 417

/shark/trunk/ports/first/include/fsf_contract.h
312,7 → 312,8
bandwidth_t Umin; // min bandwidth
bandwidth_t Umax; // max bandwidth
TIME Cmin;
TIME Tmax;
TIME Tmin;
TIME Tmax;
} server_elem;
 
int recalculate_contract(bandwidth_t U);
/shark/trunk/ports/first/first-server.c
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);