Subversion Repositories shark

Compare Revisions

Ignore whitespace Rev 410 → Rev 411

/shark/trunk/ports/first/first-server.c
392,6 → 392,9
{
 
int local_scheduler_level, scheduler_id;
SYS_FLAGS f;
TIME T,Q;
int i=0;
 
#ifdef FSF_DEBUG
kern_printf("(Remove server %d)",*server);
439,13 → 442,43
level_free_descriptor(local_scheduler_level);
remove_contract(*server);
f=kern_fsave();
if (recalculate_contract(fsf_max_bw)==-1) {
kern_frestore(f);
return FSF_ERR_CREATE_SERVER;
}
#ifdef FSF_DEBUG
kern_printf("(Adjust budget)");
#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) {
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);
}
server_list[i].U=server_list[i].Umax;
}
 
recalculate_contract(fsf_max_bw);
 
*server = -1;
kern_frestore(f);
 
return 0;
 
}
 
int recalculate_contract(bandwidth_t U) {