21,11 → 21,23 |
#include <pthread.h> |
#include <stdlib.h> |
|
#define FSF_DEBUG |
//#define FSF_DEBUG |
|
int cbsstar_level; |
int posix_level; |
int fsf_cbsstar_level; |
int fsf_posix_level; |
|
int FSF_register_module(int posix_level, int cbsstar_level) |
{ |
|
printk("FSF Module\n"); |
|
fsf_posix_level = posix_level; |
fsf_cbsstar_level = cbsstar_level; |
|
return 0; |
|
} |
|
/* Convert the contract specification to |
* budget parameters |
*/ |
38,16 → 50,16 |
|
switch (contract->local_scheduler_id) { |
case FSF_SCHEDULER_POSIX: |
local_scheduler_level = POSIXSTAR_register_level(cbsstar_level,5000,32); |
local_scheduler_level = POSIXSTAR_register_level(fsf_cbsstar_level,5000,32); |
break; |
case FSF_SCHEDULER_EDF: |
local_scheduler_level = EDFSTAR_register_level(cbsstar_level); |
local_scheduler_level = EDFSTAR_register_level(fsf_cbsstar_level); |
break; |
case FSF_SCHEDULER_RM: |
break; |
} |
|
*budget = CBSSTAR_setbudget(cbsstar_level, |
*budget = CBSSTAR_setbudget(fsf_cbsstar_level, |
TIMESPEC2USEC(&(contract->budget_min)), |
TIMESPEC2USEC(&(contract->period_max)), |
local_scheduler_level,contract->local_scheduler_id); |
61,7 → 73,7 |
int budget) |
{ |
|
CBSSTAR_adjust_budget(cbsstar_level, |
CBSSTAR_adjust_budget(fsf_cbsstar_level, |
TIMESPEC2USEC(&(contract->budget_min)), |
TIMESPEC2USEC(&(contract->period_max)), |
budget); |
142,8 → 154,8 |
if (server == -1 || thread == -1) |
return FSF_ERR_BIND_THREAD; |
|
local_scheduler_level = CBSSTAR_get_local_scheduler_level_from_budget(cbsstar_level,server); |
scheduler_id = CBSSTAR_get_local_scheduler_id_from_budget(cbsstar_level,server); |
local_scheduler_level = CBSSTAR_get_local_scheduler_level_from_budget(fsf_cbsstar_level,server); |
scheduler_id = CBSSTAR_get_local_scheduler_id_from_budget(fsf_cbsstar_level,server); |
|
/* Check if thread is already bind */ |
switch (scheduler_id) { |
216,8 → 228,8 |
if (thread == -1) |
return FSF_ERR_UNBIND_THREAD; |
|
local_scheduler_level = CBSSTAR_get_local_scheduler_level_from_pid(cbsstar_level,thread); |
scheduler_id = CBSSTAR_get_local_scheduler_id_from_pid(cbsstar_level,thread); |
local_scheduler_level = CBSSTAR_get_local_scheduler_level_from_pid(fsf_cbsstar_level,thread); |
scheduler_id = CBSSTAR_get_local_scheduler_id_from_pid(fsf_cbsstar_level,thread); |
|
switch (scheduler_id) { |
case FSF_SCHEDULER_POSIX: |
237,10 → 249,10 |
|
msg->command = STD_SET_NEW_MODEL; |
msg->param = (void *)(&nrt); |
level_table[posix_level]->public_message(posix_level,thread,msg); |
level_table[fsf_posix_level]->public_message(fsf_posix_level,thread,msg); |
|
msg->command = STD_SET_NEW_LEVEL; |
msg->param = (void *)(posix_level); |
msg->param = (void *)(fsf_posix_level); |
task_message(msg,thread,0); |
|
free(msg); |
264,10 → 276,10 |
|
msg->command = STD_SET_NEW_MODEL; |
msg->param = (void *)(&nrt); |
level_table[posix_level]->public_message(posix_level,thread,msg); |
level_table[fsf_posix_level]->public_message(fsf_posix_level,thread,msg); |
|
msg->command = STD_SET_NEW_LEVEL; |
msg->param = (void *)(posix_level); |
msg->param = (void *)(fsf_posix_level); |
task_message(msg,thread,0); |
|
free(msg); |
338,8 → 350,8 |
{ |
int local_scheduler_level, scheduler_id; |
|
local_scheduler_level = CBSSTAR_get_local_scheduler_level_from_pid(cbsstar_level,thread); |
scheduler_id = CBSSTAR_get_local_scheduler_id_from_pid(cbsstar_level, thread); |
local_scheduler_level = CBSSTAR_get_local_scheduler_level_from_pid(fsf_cbsstar_level,thread); |
scheduler_id = CBSSTAR_get_local_scheduler_id_from_pid(fsf_cbsstar_level, thread); |
|
switch (scheduler_id) { |
case FSF_SCHEDULER_POSIX: |
367,8 → 379,8 |
if (*server < 0) |
return FSF_ERR_INVALID_SERVER; |
|
local_scheduler_level = CBSSTAR_get_local_scheduler_level_from_budget(cbsstar_level,*server); |
scheduler_id = CBSSTAR_get_local_scheduler_id_from_budget(cbsstar_level,*server); |
local_scheduler_level = CBSSTAR_get_local_scheduler_level_from_budget(fsf_cbsstar_level,*server); |
scheduler_id = CBSSTAR_get_local_scheduler_id_from_budget(fsf_cbsstar_level,*server); |
|
switch (scheduler_id) { |
case FSF_SCHEDULER_POSIX: |
383,7 → 395,7 |
break; |
} |
|
CBSSTAR_removebudget(cbsstar_level,*server); |
CBSSTAR_removebudget(fsf_cbsstar_level,*server); |
|
level_free_descriptor(local_scheduler_level); |
|