Subversion Repositories shark

Compare Revisions

Ignore whitespace Rev 405 → Rev 406

/shark/trunk/ports/first/include/fsf_contract.h
29,7 → 29,7
 
 
/* S.Ha.R.K. Init */
int FSF_register_module(int server_level);
int FSF_register_module(int server_level, bandwidth_t max_bw);
 
//////////////////////////////////////////////////////////////////
// BASIC TYPES AND CONSTANTS
/shark/trunk/ports/first/include/fsf_configuration_parameters.h
29,18 → 29,18
// the implementation
 
// Maximum number of accepted contracts (servers)
#define FSF_MAX_N_SERVERS 10
#define FSF_MAX_N_SERVERS 20
 
// Maximum number of threads that may be scheduled by the framework
#define FSF_MAX_N_THREADS 10
#define FSF_MAX_N_THREADS 20
 
// Maximum number of critical sections that can be stored in a
// contract parameters object
#define FSF_MAX_N_CRITICAL_SECTIONS 10
#define FSF_MAX_N_CRITICAL_SECTIONS 20
 
// Maximum number of utilization values (pairs of budget and period)
// that can be stored in a contract parameters object
#define FSF_MAX_N_UTILIZATION_VALUES 5
#define FSF_MAX_N_UTILIZATION_VALUES 20
 
#define FSF_MAX_N_BIND_THREAD 1
 
/shark/trunk/ports/first/first-server.c
23,15 → 23,16
#define FSF_DEBUG
int current=0;
server_elem server_list[MAX_PROC];
bandwidth_t min_bandwidth=0;
bandwidth_t fsf_max_bw = 0;
int fsf_server_level;
 
int FSF_register_module(int server_level)
int FSF_register_module(int server_level, bandwidth_t max_bw)
{
printk("FSF Module\n");
current=0;
fsf_server_level = server_level;
fsf_max_bw = max_bw;
 
return 0;
 
115,7 → 116,6
server_list[current].Cmin=Q;
mul32div32to32(MAX_BANDWIDTH,Q,T,server_list[current].Umin);
min_bandwidth+=server_list[current].Umin;
server_list[current].U=server_list[current].Umax;
 
#ifdef FSF_DEBUG
143,10 → 143,8
// compress the array;
while (i<(current-1)) {
server_list[i].server=server_list[i+1].server;
TIMESPEC_ASSIGN(&(server_list[i+1].budget_actual), &(server_list[i].budget_actual));
TIMESPEC_ASSIGN(&(server_list[i+1].period_actual), &(server_list[i].period_actual));
server_list[i].Umin=server_list[i+1].Umin;
server_list[i].U=server_list[i+1].U;
server_list[i].U=server_list[i+1].Umax;
server_list[i].Umax=server_list[i+1].Umax;
server_list[i].Cmin=server_list[i+1].Cmin;
server_list[i].Tmax=server_list[i+1].Tmax;
187,7 → 185,7
 
if (*server >= 0) {
link_contract_to_server(contract,*server);
if (recalculate_contract(MAX_BANDWIDTH)==-1) {
if (recalculate_contract(fsf_max_bw)==-1) {
kern_frestore(f);
return FSF_ERR_CREATE_SERVER;
}
394,7 → 392,7
remove_contract(*server);
 
recalculate_contract(MAX_BANDWIDTH);
recalculate_contract(fsf_max_bw);
 
*server = -1;
 
468,7 → 466,6
fsf_server_id_t server)
{
SYS_FLAGS f;
int i=0;
#ifdef FSF_DEBUG
kern_printf("(Renegotiate for server %d)",server);
#endif
481,14 → 478,11
// compute the new value
//
f = kern_fsave();
if (recalculate_contract(MAX_BANDWIDTH)==-1) {
if (recalculate_contract(fsf_max_bw)==-1) {
kern_frestore(f);
return FSF_ERR_CREATE_SERVER;
}
/*
for (i=0; i<current; i++)
adjust_SERVER_budget(server_list[i].server,server_list[i].budget_actual, server_list[i].period_actual);
*/
kern_frestore(f);
return 0;
}