From 74f2569ef754b076e26c7d1eed572715daaf8dfc Mon Sep 17 00:00:00 2001 From: Andrea Bastoni Date: Wed, 22 Sep 2010 15:52:42 -0400 Subject: 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. --- src/litmus.c | 18 ++++++++++-------- src/task.c | 18 ++++++++++-------- 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, int set_cpu_set) { struct rt_task param; + struct edffm_params fm; int ret; param.exec_cost = e; param.period = p; @@ -82,14 +83,15 @@ int sporadic_task_ns_edffm(lt_t e, lt_t p, lt_t phase, int cpu, /* check on denominators */ if (frac1[1] != 0 && frac2[1] != 0) { /* edf-fm migrat task */ - param.nr_cpus = 1; - param.cpus[0] = cpu1; - param.cpus[1] = cpu2; - param.fraction[0][0] = frac1[0]; - param.fraction[1][0] = frac1[1]; - param.fraction[0][1] = frac2[0]; - param.fraction[1][1] = frac2[1]; + fm.nr_cpus = 1; + fm.cpus[0] = cpu1; + fm.cpus[1] = cpu2; + fm.fraction[0][0] = frac1[0]; + fm.fraction[1][0] = frac1[1]; + fm.fraction[0][1] = frac2[0]; + fm.fraction[1][1] = frac2[1]; } + param.semi_part.fm = fm; param.cls = cls; param.phase = phase; param.budget_policy = budget_policy; @@ -113,7 +115,7 @@ int sporadic_task_ns_npsf(lt_t e, lt_t p, lt_t phase, param.cls = cls; param.phase = phase; param.budget_policy = budget_policy; - param.npsf_id = npsf_id; + param.semi_part.npsf_id = (int) npsf_id; if (set_cpu_set) { 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, int cpu1, int cpu2, task_class_t class) { struct rt_task params; + struct edffm_params fm; params.cpu = cpu; params.period = period; params.exec_cost = wcet; @@ -56,14 +57,15 @@ int __create_rt_task_edffm(rt_fn_t rt_prog, void *arg, int cpu, int wcet, /* edf-fm check on denominators for migratory tasks */ if (frac1[1] != 0 && frac2[1] != 0) { /* edf-fm migrat task */ - params.nr_cpus = 1; - params.cpus[0] = cpu1; - params.cpus[1] = cpu2; - params.fraction[0][0] = frac1[0]; - params.fraction[1][0] = frac1[1]; - params.fraction[0][1] = frac2[0]; - params.fraction[1][1] = frac2[1]; + fm.nr_cpus = 1; + fm.cpus[0] = cpu1; + fm.cpus[1] = cpu2; + fm.fraction[0][0] = frac1[0]; + fm.fraction[1][0] = frac1[1]; + fm.fraction[0][1] = frac2[0]; + fm.fraction[1][1] = frac2[1]; } + params.semi_part.fm = fm; return __launch_rt_task(rt_prog, arg, (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, params.phase = 0; /* enforce budget for tasks that might not use sleep_next_period() */ params.budget_policy = QUANTUM_ENFORCEMENT; - params.npsf_id = npsf_id; + params.semi_part.npsf_id = (int) npsf_id; return __launch_rt_task(rt_prog, arg, (rt_setup_fn_t) set_rt_task_param, ¶ms); -- cgit v1.2.2