diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/litmus.c | 15 | ||||
-rw-r--r-- | src/task.c | 5 |
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 */ |
35 | int be_migrate_to(int target_cpu) | 33 | int 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(), ¶m); | 67 | return set_rt_task_param(gettid(), ¶m); |
70 | } | 68 | } |
71 | 69 | ||
70 | /* Sporadic task helper function for Semi-Partitioned algorithms. */ | ||
72 | int sporadic_task_ns_edffm(lt_t e, lt_t p, lt_t phase, int cpu, | 71 | int 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(), ¶m); | 123 | return set_rt_task_param(gettid(), ¶m); |
125 | } | 124 | } |
126 | 125 | ||
126 | int 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 | |||
127 | int init_kernel_iface(void); | 136 | int init_kernel_iface(void); |
128 | 137 | ||
129 | int init_litmus(void) | 138 | int init_litmus(void) |
@@ -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 | ||
111 | int 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 |