Subversion Repositories shark

Compare Revisions

Ignore whitespace Rev 936 → Rev 937

/shark/trunk/ports/first/first-server.c
82,6 → 82,10
struct timespec default_budget = FSF_SERVICE_THREAD_BUDGET;
DUMMY_TASK_MODEL m;
fsf_sched_params_t pr;
int budget_overrun_sig_notify = FSF_NULL_SIGNAL;
union sigval budget_overrun_sig_value = {0};
int deadline_miss_sig_notify = FSF_NULL_SIGNAL;
union sigval deadline_miss_sig_value = {0};
 
pr.policy=FSF_NONE;
pr.params=&m;
98,6 → 102,13
fsf_initialize_contract(&service_contract);
 
fsf_set_contract_basic_parameters(&service_contract,&default_budget,&default_period,FSF_DEFAULT_WORKLOAD);
fsf_set_contract_timing_requirements (&service_contract,
true,NULL,
budget_overrun_sig_notify,
budget_overrun_sig_value,
deadline_miss_sig_notify,
deadline_miss_sig_value);
 
negotiate_contract(&service_contract,&service_server);
 
//server_task = task_create("stask",service_task,model,NULL);
408,10 → 419,12
int err=0;
 
err = fsf_negotiate_contract(contract,server);
//kern_printf("ENMyS:%d", *server);
if (!err) {
#ifdef FSF_DEBUG
kern_printf("Bind task");
#endif
err = fsf_bind_thread_to_server(*server,exec_shadow);
//kern_printf("EMMyE:%d:%d",*server,err);
 
} else return err;
 
return err;
592,7 → 605,7
 
STD_command_message *msg;
int local_scheduler_level,scheduler_id;
 
SYS_FLAGS f;
/* Move thread from the posix module to local scheduler */
 
#ifdef FSF_DEBUG
618,18 → 631,24
 
/* Set server on local scheduler */
NONESTAR_setbudget(local_scheduler_level,thread,(int)(server));
 
f=kern_fsave();
/* Send change level command to posix level */
msg = (STD_command_message *)malloc(sizeof(STD_command_message));
 
msg->command = STD_SET_NEW_MODEL;
msg->param = (void *)(&rt_arg);
level_table[local_scheduler_level]->public_message(local_scheduler_level,thread,msg);
 
level_table[local_scheduler_level]->public_message(local_scheduler_level,thread,msg);
msg->command = STD_SET_NEW_LEVEL;
msg->param = (void *)(local_scheduler_level);
task_message(msg,thread,0);
scheduler();
kern_context_load(proc_table[exec_shadow].context);
kern_frestore(f);
 
free(msg);
} else return FSF_ERR_BAD_ARGUMENT;
 
return 0;
1028,6 → 1047,16
return 0;
}
 
int fsf_negotiate_group
(const fsf_contracts_group_t *contracts_up,
const fsf_servers_group_t *severs_down,
fsf_servers_group_t *severs_up,
bool *accepted) {
 
return 0;
}
 
int fsf_renegotiate_contract
(const fsf_contract_parameters_t *new_contract,
fsf_server_id_t server)