aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndrea Bastoni <bastoni@cs.unc.edu>2010-09-22 12:05:47 -0400
committerBjoern B. Brandenburg <bbb@cs.unc.edu>2011-01-26 18:20:24 -0500
commit03b0ba375a39a632988e4ec5ec2b887bc24b92aa (patch)
treefc78bd3d3e198dc057ba79630eb6650997a41e35
parent5a648736360fb4038ad2e1c01a5922bda206e297 (diff)
Add sporadic_task_ns_semi() helper function for semi-part algos.
-rw-r--r--include/litmus.h4
-rw-r--r--src/litmus.c15
2 files changed, 16 insertions, 3 deletions
diff --git a/include/litmus.h b/include/litmus.h
index 7382936..fd40e87 100644
--- a/include/litmus.h
+++ b/include/litmus.h
@@ -9,6 +9,7 @@ extern "C" {
9 * This is required for the rt_param 9 * This is required for the rt_param
10 * and control_page structures. 10 * and control_page structures.
11 */ 11 */
12#include <linux/threads.h>
12#include <litmus/rt_param.h> 13#include <litmus/rt_param.h>
13 14
14#include <sys/types.h> 15#include <sys/types.h>
@@ -50,6 +51,9 @@ int sporadic_task_ns_npsf(
50 int cpu, task_class_t cls, int npsf_id, 51 int cpu, task_class_t cls, int npsf_id,
51 budget_policy_t budget_policy, int set_cpu_set); 52 budget_policy_t budget_policy, int set_cpu_set);
52 53
54/* times are in ns, specific helper for semi-partitioned algos */
55int sporadic_task_ns_semi(struct rt_task *rt);
56
53/* budget enforcement off by default in these macros */ 57/* budget enforcement off by default in these macros */
54#define sporadic_global(e, p) \ 58#define sporadic_global(e, p) \
55 sporadic_task(e, p, 0, 0, RT_CLASS_SOFT, NO_ENFORCEMENT, 0) 59 sporadic_task(e, p, 0, 0, RT_CLASS_SOFT, NO_ENFORCEMENT, 0)
diff --git a/src/litmus.c b/src/litmus.c
index b0d7a16..c745a2c 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
@@ -128,6 +126,17 @@ int sporadic_task_ns_npsf(lt_t e, lt_t p, lt_t phase,
128 return set_rt_task_param(gettid(), &param); 126 return set_rt_task_param(gettid(), &param);
129} 127}
130 128
129/* Sporadic task helper function for Semi-Partitioned algorithms. */
130int sporadic_task_ns_semi(struct rt_task *param)
131{
132 int ret;
133
134 ret = be_migrate_to(param->cpu);
135 check("migrate to cpu");
136
137 return set_rt_task_param(gettid(), param);
138}
139
131int init_kernel_iface(void); 140int init_kernel_iface(void);
132 141
133int init_litmus(void) 142int init_litmus(void)