52,6 → 52,9 |
case FSF_SCHEDULER_RM: |
local_scheduler_level = RMSTAR_register_level(fsf_server_level); |
break; |
case FSF_SCHEDULER_MPEG: |
local_scheduler_level = MPEGSTAR_register_level(fsf_server_level); |
break; |
} |
|
*budget = SERVER_setbudget(fsf_server_level, |
201,6 → 204,19 |
task_activate(*thread); |
|
break; |
case FSF_SCHEDULER_MPEG: |
|
hard_task_def_arg(*(HARD_TASK_MODEL *)(local_scheduler_arg),arg); |
hard_task_def_level(*(HARD_TASK_MODEL *)(local_scheduler_arg),local_scheduler_level); |
|
*thread = task_create("RMSTAR", thread_code, local_scheduler_arg, NULL); |
if (*thread == NIL) |
return FSF_ERR_CREATE_THREAD; |
|
MPEGSTAR_setbudget(local_scheduler_level, *thread, (int)(server)); |
|
break; |
|
default: |
return FSF_ERR_INVALID_SERVER; |
break; |
226,6 → 242,8 |
return EDFSTAR_getbudget(local_scheduler_level,thread); |
case FSF_SCHEDULER_RM: |
return RMSTAR_getbudget(local_scheduler_level,thread); |
case FSF_SCHEDULER_MPEG: |
return MPEGSTAR_getbudget(local_scheduler_level,thread); |
default: |
return -1; |
} |
271,6 → 289,14 |
return FSF_ERR_SERVER_USED; |
|
break; |
|
case FSF_SCHEDULER_MPEG: |
/* Check if some thread use the server */ |
if(MPEGSTAR_budget_has_thread(local_scheduler_level,*server)) |
return FSF_ERR_SERVER_USED; |
|
break; |
|
} |
|
SERVER_removebudget(fsf_server_level,*server); |