aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndrea Bastoni <bastoni@cs.unc.edu>2010-09-22 15:52:42 -0400
committerBjoern B. Brandenburg <bbb@cs.unc.edu>2011-01-26 18:20:24 -0500
commit562a5a9c2909b912807d6d0059bb1efcc7d0c6fe (patch)
tree90d16b30b4cb22df3024017dff07925539fe91b4
parent11c1c99d7fd4004244d18f4df144f0420956b9db (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.c18
-rw-r--r--src/task.c18
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);
diff --git a/src/task.c b/src/task.c
index 8621aa2..daf95ca 100644
--- a/src/task.c
+++ b/src/task.c
@@ -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, &params); 71 (rt_setup_fn_t) set_rt_task_param, &params);
@@ -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, &params); 88 (rt_setup_fn_t) set_rt_task_param, &params);