aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndrea Bastoni <bastoni@cs.unc.edu>2010-09-22 15:52:42 -0400
committerAndrea Bastoni <bastoni@cs.unc.edu>2010-09-22 15:52:42 -0400
commit74f2569ef754b076e26c7d1eed572715daaf8dfc (patch)
tree7ffb639d091004995e0bcda8015dd59a3020de70
parent41387a245f753e25a81d1fe38aed827856651103 (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 65f711a..b339e62 100644
--- a/src/litmus.c
+++ b/src/litmus.c
@@ -75,6 +75,7 @@ int sporadic_task_ns_edffm(lt_t e, lt_t p, lt_t phase, int cpu,
75 int set_cpu_set) 75 int set_cpu_set)
76{ 76{
77 struct rt_task param; 77 struct rt_task param;
78 struct edffm_params fm;
78 int ret; 79 int ret;
79 param.exec_cost = e; 80 param.exec_cost = e;
80 param.period = p; 81 param.period = p;
@@ -82,14 +83,15 @@ int sporadic_task_ns_edffm(lt_t e, lt_t p, lt_t phase, int cpu,
82 /* check on denominators */ 83 /* check on denominators */
83 if (frac1[1] != 0 && frac2[1] != 0) { 84 if (frac1[1] != 0 && frac2[1] != 0) {
84 /* edf-fm migrat task */ 85 /* edf-fm migrat task */
85 param.nr_cpus = 1; 86 fm.nr_cpus = 1;
86 param.cpus[0] = cpu1; 87 fm.cpus[0] = cpu1;
87 param.cpus[1] = cpu2; 88 fm.cpus[1] = cpu2;
88 param.fraction[0][0] = frac1[0]; 89 fm.fraction[0][0] = frac1[0];
89 param.fraction[1][0] = frac1[1]; 90 fm.fraction[1][0] = frac1[1];
90 param.fraction[0][1] = frac2[0]; 91 fm.fraction[0][1] = frac2[0];
91 param.fraction[1][1] = frac2[1]; 92 fm.fraction[1][1] = frac2[1];
92 } 93 }
94 param.semi_part.fm = fm;
93 param.cls = cls; 95 param.cls = cls;
94 param.phase = phase; 96 param.phase = phase;
95 param.budget_policy = budget_policy; 97 param.budget_policy = budget_policy;
@@ -113,7 +115,7 @@ int sporadic_task_ns_npsf(lt_t e, lt_t p, lt_t phase,
113 param.cls = cls; 115 param.cls = cls;
114 param.phase = phase; 116 param.phase = phase;
115 param.budget_policy = budget_policy; 117 param.budget_policy = budget_policy;
116 param.npsf_id = npsf_id; 118 param.semi_part.npsf_id = (int) npsf_id;
117 119
118 if (set_cpu_set) { 120 if (set_cpu_set) {
119 ret = be_migrate_to(cpu); 121 ret = be_migrate_to(cpu);
diff --git a/src/task.c b/src/task.c
index 9f6db5e..2db9c98 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);