Subversion Repositories shark

Compare Revisions

Ignore whitespace Rev 943 → Rev 944

/shark/trunk/ports/first/first-server.c
26,6 → 26,7
#include "edfstar.h"
#include "nonestar.h"
#include "rmstar.h"
#include "tdstar.h"
 
#include <pthread.h>
#include <stdlib.h>
150,6 → 151,10
case FSF_NONE:
local_scheduler_level = NONESTAR_register_level(fsf_server_level);
break;
case FSF_TABLE_DRIVEN:
kern_printf("Register level");
local_scheduler_level = TDSTAR_register_level(fsf_server_level);
break;
}
 
if (contract->d_equals_t == true) {
741,18 → 746,19
 
case FSF_TABLE_DRIVEN:
{
DUMMY_TASK_MODEL dt;
dummy_task_default_model(dt);
HARD_TASK_MODEL ht;
hard_task_default_model(ht);
hard_task_def_aperiodic(ht);
dummy_task_def_arg(dt,arg);
dummy_task_def_level(dt,local_scheduler_level);
hard_task_def_arg(ht,arg);
hard_task_def_level(ht,local_scheduler_level);
*thread = task_create("TDSTAR", thread_code, &dt, NULL);
*thread = task_create("TDSTAR", thread_code, &ht, NULL);
if (*thread == NIL)
return FSF_ERR_INTERNAL_ERROR;
TDSTAR_setbudget(local_scheduler_level, *thread, (int)(server));
TDSTAR_settable(local_scheduler_level, (fsf_table_driven_params_t *)(local_scheduler_arg->params));
TDSTAR_settable(local_scheduler_level, (fsf_table_driven_params_t *)(local_scheduler_arg->params),*thread);
}
break;
 
1175,4 → 1181,24
return fsf_get_budget_and_period(service_server, budget, period);
 
}
 
int fsf_init_local_scheduler(fsf_server_id_t server,
fsf_sched_init_info_t info) {
int scheduler_id, local_scheduler_level;
 
struct timespec *duration=(struct timespec *)info;
 
local_scheduler_level=SERVER_get_local_scheduler_level_from_budget(fsf_server_level, server);
scheduler_id = SERVER_get_local_scheduler_id_from_budget(fsf_server_level,server);
if (scheduler_id!=FSF_TABLE_DRIVEN)
return FSF_ERR_SCHED_POLICY_NOT_COMPATIBLE;
 
if (duration->tv_sec < 0 || duration->tv_nsec > 1000000000)
return FSF_ERR_BAD_ARGUMENT;
 
//TDSTAR_debugtable(local_scheduler_level);
TDSTAR_start_simulation(local_scheduler_level);
return 0;
 
}