/demos/trunk/loader/common/nload.c |
---|
9,8 → 9,7 |
* |
*/ |
#include "fsf_basic_types.h" |
#include "fsf_core.h" //Framework main header |
#include "fsf.h" |
#include "calibrate.h" |
#include "func.h" //Generic function definitions |
263,16 → 262,15 |
switch(current->task_type) { |
case PAR_TASK_OS: |
err = generic_create_thread(generic_get_server_from_contract(current->contract),&j,NULL, |
oneshot_task,(void *)current,generic_get_task_model(current)); |
err = fsf_create_local_thread(generic_get_server_from_contract(current->contract),generic_get_task_model(current), &j,NULL, |
oneshot_task,(void *)current); |
break; |
case PAR_TASK_BT: |
err = generic_create_thread(generic_get_server_from_contract(current->contract),&j,NULL, |
back_task,(void *)current,generic_get_task_model(current)); |
err = fsf_create_local_thread(generic_get_server_from_contract(current->contract),generic_get_task_model(current), &j,NULL, |
back_task,(void *)current); |
break; |
case PAR_TASK_CT: |
err = generic_create_thread(generic_get_server_from_contract(current->contract),&j,NULL, |
periodic_task,(void *)current,generic_get_task_model(current)); |
err = fsf_create_local_thread(generic_get_server_from_contract(current->contract),generic_get_task_model(current), &j,NULL, periodic_task,(void *)current); |
break; |
} |
if (err) { |
/demos/trunk/loader/shark/func.h |
---|
19,21 → 19,6 |
* |
* generic_get_server_from_contract(int contract_number) */ |
#define generic_create_thread fsf_create_thread |
/* Create a task/thread inside a specific server. |
* it's very similar to fsf_create_thread, but we need a parameter |
* to set the local scheduler task and actually it's outside |
* the framework |
* |
* generic_task_create( |
* server number, |
* pthread_t of created task (-1 if failed), |
* pthread_attr_t, |
* task_body, |
* arg of the body (must be "(void *)current"), |
* arg for real-time task specification) |
*/ |
#define generic_calibrate_cycle calibrate_cycle |
/* Set the calibration parameter "cal_cycle" |
* only if it's initialized to 0. The calibration routine |
/demos/trunk/loader/shark/shark.c |
---|
62,7 → 62,11 |
void *get_task_model(struct loader_task *current) { |
if (current->local_scheduler == PAR_POSIX) { |
static NRT_TASK_MODEL nrt; |
static fsf_sched_params_t pr; |
pr.policy=FSF_POSIX; |
pr.params=&nrt; |
nrt_task_default_model(nrt); |
nrt_task_def_save_arrivals(nrt); |
nrt_task_def_ctrl_jet(nrt); |
69,13 → 73,17 |
nrt_task_def_group(nrt,current->group); |
nrt_task_def_usemath(nrt); |
return &nrt; |
return ≺ |
} |
if (current->local_scheduler == PAR_EDF) { |
static HARD_TASK_MODEL ht; |
static fsf_sched_params_t pr; |
pr.policy=FSF_EDF; |
pr.params=&ht; |
hard_task_default_model(ht); |
hard_task_def_ctrl_jet(ht); |
hard_task_def_mit(ht,TIMESPEC2USEC(¤t->deadline)); |
83,22 → 91,30 |
hard_task_def_group(ht,current->group); |
hard_task_def_aperiodic(ht); |
hard_task_def_usemath(ht); |
return &ht; |
return ≺ |
} |
if (current->local_scheduler == PAR_NONE) { |
static DUMMY_TASK_MODEL d; |
static fsf_sched_params_t pr; |
pr.policy=FSF_NONE; |
pr.params=&d; |
dummy_task_default_model(d); |
dummy_task_def_group(d,current->group); |
return &d; |
return ≺ |
} |
if (current->local_scheduler == PAR_RM) { |
static HARD_TASK_MODEL ht; |
static fsf_sched_params_t pr; |
pr.policy=FSF_RM; |
pr.params=&ht; |
hard_task_default_model(ht); |
hard_task_def_mit(ht,TIMESPEC2USEC(¤t->deadline)); |
hard_task_def_wcet(ht,TIMESPEC2USEC(¤t->wcet)); |
105,7 → 121,8 |
hard_task_def_ctrl_jet(ht); |
hard_task_def_group(ht,current->group); |
hard_task_def_usemath(ht); |
return &ht; |
return ≺ |
} |
return NULL; |