Subversion Repositories shark

Compare Revisions

Ignore whitespace Rev 1542 → Rev 1543

/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(&current->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(&current->deadline));
hard_task_def_wcet(ht,TIMESPEC2USEC(&current->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;