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,7 → 631,7 |
|
/* 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)); |
|
625,11 → 638,17 |
msg->command = STD_SET_NEW_MODEL; |
msg->param = (void *)(&rt_arg); |
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) |