aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/litmus.c15
-rw-r--r--src/task.c5
2 files changed, 17 insertions, 3 deletions
diff --git a/src/litmus.c b/src/litmus.c
index b339e62..33e1a6d 100644
--- a/src/litmus.c
+++ b/src/litmus.c
@@ -29,8 +29,6 @@ task_class_t str2class(const char* str)
29 return -1; 29 return -1;
30} 30}
31 31
32#define NS_PER_MS 1000000
33
34/* only for best-effort execution: migrate to target_cpu */ 32/* only for best-effort execution: migrate to target_cpu */
35int be_migrate_to(int target_cpu) 33int be_migrate_to(int target_cpu)
36{ 34{
@@ -45,7 +43,7 @@ int sporadic_task(lt_t e, lt_t p, lt_t phase,
45 int cpu, task_class_t cls, 43 int cpu, task_class_t cls,
46 budget_policy_t budget_policy, int set_cpu_set) 44 budget_policy_t budget_policy, int set_cpu_set)
47{ 45{
48 return sporadic_task_ns(e * NS_PER_MS, p * NS_PER_MS, phase * NS_PER_MS, 46 return sporadic_task_ns(e * __NS_PER_MS, p * __NS_PER_MS, phase * __NS_PER_MS,
49 cpu, cls, budget_policy, set_cpu_set); 47 cpu, cls, budget_policy, set_cpu_set);
50} 48}
51 49
@@ -69,6 +67,7 @@ int sporadic_task_ns(lt_t e, lt_t p, lt_t phase,
69 return set_rt_task_param(gettid(), &param); 67 return set_rt_task_param(gettid(), &param);
70} 68}
71 69
70/* Sporadic task helper function for Semi-Partitioned algorithms. */
72int sporadic_task_ns_edffm(lt_t e, lt_t p, lt_t phase, int cpu, 71int sporadic_task_ns_edffm(lt_t e, lt_t p, lt_t phase, int cpu,
73 lt_t *frac1, lt_t *frac2, int cpu1, int cpu2, 72 lt_t *frac1, lt_t *frac2, int cpu1, int cpu2,
74 task_class_t cls, budget_policy_t budget_policy, 73 task_class_t cls, budget_policy_t budget_policy,
@@ -124,6 +123,16 @@ int sporadic_task_ns_npsf(lt_t e, lt_t p, lt_t phase,
124 return set_rt_task_param(gettid(), &param); 123 return set_rt_task_param(gettid(), &param);
125} 124}
126 125
126int sporadic_task_ns_semi(struct rt_task *param)
127{
128 int ret;
129
130 ret = be_migrate_to(param->cpu);
131 check("migrate to cpu");
132
133 return set_rt_task_param(gettid(), param);
134}
135
127int init_kernel_iface(void); 136int init_kernel_iface(void);
128 137
129int init_litmus(void) 138int init_litmus(void)
diff --git a/src/task.c b/src/task.c
index 2db9c98..daf95ca 100644
--- a/src/task.c
+++ b/src/task.c
@@ -108,6 +108,11 @@ int create_rt_task(rt_fn_t rt_prog, void *arg, int cpu, int wcet, int period) {
108 return __create_rt_task(rt_prog, arg, cpu, wcet, period, RT_CLASS_HARD); 108 return __create_rt_task(rt_prog, arg, cpu, wcet, period, RT_CLASS_HARD);
109} 109}
110 110
111int create_rt_task_semi(rt_fn_t rt_prog, void *arg, struct rt_task *params)
112{
113 return __launch_rt_task(rt_prog, arg,
114 (rt_setup_fn_t) set_rt_task_param, params);
115}
111 116
112#define SCHED_NORMAL 0 117#define SCHED_NORMAL 0
113#define SCHED_LITMUS 6 118#define SCHED_LITMUS 6