Subversion Repositories shark

Compare Revisions

Ignore whitespace Rev 842 → Rev 843

/shark/trunk/ports/first/include/fsf_contract.h
353,7 → 353,8
fsf_server_id_t server;
TIME actual_period;
TIME actual_budget;
int Qs; // quality of service
int Qs; // quality of service
int Is; // importance of service
bandwidth_t U; // actual bandwidth
bandwidth_t Umin; // min bandwidth
bandwidth_t Umax; // max bandwidth
/shark/trunk/ports/first/server-task.c
34,7 → 34,7
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
*
* CVS : $Id: server-task.c,v 1.4 2004-05-26 13:44:55 trimarchi Exp $
* CVS : $Id: server-task.c,v 1.5 2004-09-10 13:05:33 trimarchi Exp $
*/
 
#include "ll/i386/64bit.h"
187,63 → 187,3
 
}
 
 
#if defined MICHAEL
int recalculate_contract(bandwidth_t U) {
bandwidth_t current_bandwidth;
unsigned int temp_U;
int Qt;
int isok=0;
int i=0;
#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);
#ifdef FSF_DEBUG
kern_printf("(nserver %d)", current_server);
#endif
do {
current_bandwidth=0;
Qt=0;
for (i=0; i<current_server; i++) {
if (server_list[i].Qs!=0 && server_list[i].U<server_list[i].Umax)
Qt+=server_list[i].Qs;
current_bandwidth+=server_list[i].U;
}
 
#ifdef FSF_DEBUG
kern_printf("(Total Quality %d)", Qt);
#endif
isok=1;
for (i=0; i<current_server; i++) {
if (server_list[i].Qs!=0 && server_list[i].U<server_list[i].Umax) {
temp_U=server_list[i].U;
server_list[i].U=U-current_bandwidth;
mul32div32to32(server_list[i].U, server_list[i].Qs, Qt, server_list[i].U);
temp_U+=server_list[i].U;
if (temp_U<=server_list[i].Umin) {
server_list[i].U=server_list[i].Umin;
} else if (temp_U>server_list[i].Umax) {
server_list[i].U=server_list[i].Umax;
isok=0;
} else server_list[i].U=temp_U;
#ifdef FSF_DEBUG
mul32div32to32(server_list[i].U,100, MAX_BANDWIDTH, temp);
kern_printf("(Server %d bw %d)", server_list[i].server, temp);
#endif
}
}
 
} while (!isok);
return 0;
}
#endif
/shark/trunk/ports/first/modules/cbsstar.c
580,7 → 580,7
b = (MAX_BANDWIDTH / T) * Q;
/* 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->freebudgets++;
/shark/trunk/ports/first/first-server.c
180,6 → 180,9
server_list[i].d_equals_t = FALSE;
}
server_list[i].Qs = contract->quality;
server_list[i].Is = contract->importance;
 
#ifdef FSF_DEBUG
mul32div32to32(server_list[i].Umax,100, MAX_BANDWIDTH, temp);
kern_printf("(Umax %d)",temp);
203,7 → 206,7
}
 
server_list[i].server=server;
server_list[i].Qs=1;
// server_list[i].Qs=1;
contract_to_server(contract, i);
 
220,7 → 223,7
#endif
server_list[current_server].server=server;
server_list[current_server].Qs=1;
//server_list[current_server].Qs=1;
contract_to_server(contract,current_server);
250,6 → 253,7
server_list[i].Qs=server_list[i+1].Qs;
server_list[i].deadline = server_list[i+1].deadline;
server_list[i].d_equals_t = server_list[i+1].d_equals_t;
server_list[i].Is = server_list[i+1].Is;
 
i++;
}
582,6 → 586,7
int Qt;
int isok=0;
int i=0;
int target_importance=1;
#ifdef FSF_DEBUG
int temp;
599,9 → 604,13
current_bandwidth=0;
Qt=0;
for (i=0; i<current_server; i++) {
if (server_list[i].Qs!=0 && server_list[i].U<server_list[i].Umax)
if (server_list[i].Is==target_importance
&& server_list[i].U<server_list[i].Umax && server_list[i].Qs>0)
Qt+=server_list[i].Qs;
current_bandwidth+=server_list[i].U;
#ifdef FSF_DEBUG
kern_printf("(Qs %d, Qt %d, Is %d)", server_list[i].Qs, Qt,server_list[i].Is);
#endif
}
 
#ifdef FSF_DEBUG
609,7 → 618,7
#endif
isok=1;
for (i=0; i<current_server; i++) {
if (server_list[i].Qs!=0 && server_list[i].U<server_list[i].Umax) {
if (server_list[i].Is==target_importance && server_list[i].U<server_list[i].Umax && server_list[i].Qs>0) {
temp_U=server_list[i].U;
server_list[i].U=U-current_bandwidth;
mul32div32to32(server_list[i].U, server_list[i].Qs, Qt, server_list[i].U);
628,8 → 637,8
#endif
}
}
 
} while (!isok);
target_importance++;
} while (!isok && target_importance<6);
return 0;
}