Subversion Repositories shark

Compare Revisions

Ignore whitespace Rev 406 → Rev 407

/shark/trunk/ports/first/include/fsf_contract.h
304,9 → 304,9
 
typedef struct {
fsf_server_id_t server;
struct timespec budget_actual;
struct timespec period_actual;
fsf_server_id_t server;
TIME actual_period;
TIME actual_budget;
int Qs; // quality of service
bandwidth_t U; // actual bandwidth
bandwidth_t Umin; // min bandwidth
/shark/trunk/ports/first/modules/grubstar.c
630,7 → 630,7
mul32div32to32(MAX_BANDWIDTH,Q,T,b);
/* really update lev->U, checking an overflow... */
if (Q< T && MAX_BANDWIDTH - lev->U > b) {
if (Q< T /* && MAX_BANDWIDTH - lev->U > b */) {
lev->U += b;
//lev->Uf += b; Start in Reclaiming
/shark/trunk/ports/first/first-server.c
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);
 
}
 
}