diff options
author | Andrea Bastoni <bastoni@cs.unc.edu> | 2010-09-22 12:05:47 -0400 |
---|---|---|
committer | Bjoern B. Brandenburg <bbb@cs.unc.edu> | 2011-01-26 18:20:24 -0500 |
commit | 03b0ba375a39a632988e4ec5ec2b887bc24b92aa (patch) | |
tree | fc78bd3d3e198dc057ba79630eb6650997a41e35 | |
parent | 5a648736360fb4038ad2e1c01a5922bda206e297 (diff) |
Add sporadic_task_ns_semi() helper function for semi-part algos.
-rw-r--r-- | include/litmus.h | 4 | ||||
-rw-r--r-- | src/litmus.c | 15 |
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 */ | ||
55 | int 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 */ |
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 | ||
@@ -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(), ¶m); | 126 | return set_rt_task_param(gettid(), ¶m); |
129 | } | 127 | } |
130 | 128 | ||
129 | /* Sporadic task helper function for Semi-Partitioned algorithms. */ | ||
130 | int 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 | |||
131 | int init_kernel_iface(void); | 140 | int init_kernel_iface(void); |
132 | 141 | ||
133 | int init_litmus(void) | 142 | int init_litmus(void) |