diff options
author | Andrea Bastoni <bastoni@cs.unc.edu> | 2010-09-22 15:52:42 -0400 |
---|---|---|
committer | Bjoern B. Brandenburg <bbb@cs.unc.edu> | 2011-01-26 18:20:24 -0500 |
commit | 562a5a9c2909b912807d6d0059bb1efcc7d0c6fe (patch) | |
tree | 90d16b30b4cb22df3024017dff07925539fe91b4 | |
parent | 11c1c99d7fd4004244d18f4df144f0420956b9db (diff) |
Adapt APIs to new parameters structure.
Usage of union and proper per-semi-part algo structures forces a
modification of the APIs used by rtspin and rt_launch.
-rw-r--r-- | src/litmus.c | 18 | ||||
-rw-r--r-- | src/task.c | 18 |
2 files changed, 20 insertions, 16 deletions
diff --git a/src/litmus.c b/src/litmus.c index c745a2c..c0dae95 100644 --- a/src/litmus.c +++ b/src/litmus.c | |||
@@ -79,6 +79,7 @@ int sporadic_task_ns_edffm(lt_t e, lt_t p, lt_t phase, int cpu, | |||
79 | int set_cpu_set) | 79 | int set_cpu_set) |
80 | { | 80 | { |
81 | struct rt_task param; | 81 | struct rt_task param; |
82 | struct edffm_params fm; | ||
82 | int ret; | 83 | int ret; |
83 | param.exec_cost = e; | 84 | param.exec_cost = e; |
84 | param.period = p; | 85 | param.period = p; |
@@ -86,14 +87,15 @@ int sporadic_task_ns_edffm(lt_t e, lt_t p, lt_t phase, int cpu, | |||
86 | /* check on denominators */ | 87 | /* check on denominators */ |
87 | if (frac1[1] != 0 && frac2[1] != 0) { | 88 | if (frac1[1] != 0 && frac2[1] != 0) { |
88 | /* edf-fm migrat task */ | 89 | /* edf-fm migrat task */ |
89 | param.nr_cpus = 1; | 90 | fm.nr_cpus = 1; |
90 | param.cpus[0] = cpu1; | 91 | fm.cpus[0] = cpu1; |
91 | param.cpus[1] = cpu2; | 92 | fm.cpus[1] = cpu2; |
92 | param.fraction[0][0] = frac1[0]; | 93 | fm.fraction[0][0] = frac1[0]; |
93 | param.fraction[1][0] = frac1[1]; | 94 | fm.fraction[1][0] = frac1[1]; |
94 | param.fraction[0][1] = frac2[0]; | 95 | fm.fraction[0][1] = frac2[0]; |
95 | param.fraction[1][1] = frac2[1]; | 96 | fm.fraction[1][1] = frac2[1]; |
96 | } | 97 | } |
98 | param.semi_part.fm = fm; | ||
97 | param.cls = cls; | 99 | param.cls = cls; |
98 | param.phase = phase; | 100 | param.phase = phase; |
99 | param.budget_policy = budget_policy; | 101 | param.budget_policy = budget_policy; |
@@ -117,7 +119,7 @@ int sporadic_task_ns_npsf(lt_t e, lt_t p, lt_t phase, | |||
117 | param.cls = cls; | 119 | param.cls = cls; |
118 | param.phase = phase; | 120 | param.phase = phase; |
119 | param.budget_policy = budget_policy; | 121 | param.budget_policy = budget_policy; |
120 | param.npsf_id = npsf_id; | 122 | param.semi_part.npsf_id = (int) npsf_id; |
121 | 123 | ||
122 | if (set_cpu_set) { | 124 | if (set_cpu_set) { |
123 | ret = be_migrate_to(cpu); | 125 | ret = be_migrate_to(cpu); |
@@ -45,6 +45,7 @@ int __create_rt_task_edffm(rt_fn_t rt_prog, void *arg, int cpu, int wcet, | |||
45 | int cpu1, int cpu2, task_class_t class) | 45 | int cpu1, int cpu2, task_class_t class) |
46 | { | 46 | { |
47 | struct rt_task params; | 47 | struct rt_task params; |
48 | struct edffm_params fm; | ||
48 | params.cpu = cpu; | 49 | params.cpu = cpu; |
49 | params.period = period; | 50 | params.period = period; |
50 | params.exec_cost = wcet; | 51 | params.exec_cost = wcet; |
@@ -56,14 +57,15 @@ int __create_rt_task_edffm(rt_fn_t rt_prog, void *arg, int cpu, int wcet, | |||
56 | /* edf-fm check on denominators for migratory tasks */ | 57 | /* edf-fm check on denominators for migratory tasks */ |
57 | if (frac1[1] != 0 && frac2[1] != 0) { | 58 | if (frac1[1] != 0 && frac2[1] != 0) { |
58 | /* edf-fm migrat task */ | 59 | /* edf-fm migrat task */ |
59 | params.nr_cpus = 1; | 60 | fm.nr_cpus = 1; |
60 | params.cpus[0] = cpu1; | 61 | fm.cpus[0] = cpu1; |
61 | params.cpus[1] = cpu2; | 62 | fm.cpus[1] = cpu2; |
62 | params.fraction[0][0] = frac1[0]; | 63 | fm.fraction[0][0] = frac1[0]; |
63 | params.fraction[1][0] = frac1[1]; | 64 | fm.fraction[1][0] = frac1[1]; |
64 | params.fraction[0][1] = frac2[0]; | 65 | fm.fraction[0][1] = frac2[0]; |
65 | params.fraction[1][1] = frac2[1]; | 66 | fm.fraction[1][1] = frac2[1]; |
66 | } | 67 | } |
68 | params.semi_part.fm = fm; | ||
67 | 69 | ||
68 | return __launch_rt_task(rt_prog, arg, | 70 | return __launch_rt_task(rt_prog, arg, |
69 | (rt_setup_fn_t) set_rt_task_param, ¶ms); | 71 | (rt_setup_fn_t) set_rt_task_param, ¶ms); |
@@ -80,7 +82,7 @@ int __create_rt_task_npsf(rt_fn_t rt_prog, void *arg, int cpu, int wcet, | |||
80 | params.phase = 0; | 82 | params.phase = 0; |
81 | /* enforce budget for tasks that might not use sleep_next_period() */ | 83 | /* enforce budget for tasks that might not use sleep_next_period() */ |
82 | params.budget_policy = QUANTUM_ENFORCEMENT; | 84 | params.budget_policy = QUANTUM_ENFORCEMENT; |
83 | params.npsf_id = npsf_id; | 85 | params.semi_part.npsf_id = (int) npsf_id; |
84 | 86 | ||
85 | return __launch_rt_task(rt_prog, arg, | 87 | return __launch_rt_task(rt_prog, arg, |
86 | (rt_setup_fn_t) set_rt_task_param, ¶ms); | 88 | (rt_setup_fn_t) set_rt_task_param, ¶ms); |