diff options
author | Andrea Bastoni <bastoni@cs.unc.edu> | 2010-06-15 16:35:17 -0400 |
---|---|---|
committer | Bjoern B. Brandenburg <bbb@cs.unc.edu> | 2011-01-26 18:20:23 -0500 |
commit | f8428ba547bd70398f2fe0379a4fc5e2c2983066 (patch) | |
tree | 212910d8954e44401b48fa4cd26ac6683d4c354a /src/task.c | |
parent | 0a06230478a52a18d433735305c2cb6fc6de68da (diff) |
[EDF-fm] Add rt_launch_edffm and support for edffm task creation
Diffstat (limited to 'src/task.c')
-rw-r--r-- | src/task.c | 29 |
1 files changed, 29 insertions, 0 deletions
@@ -40,6 +40,35 @@ int __launch_rt_task(rt_fn_t rt_prog, void *rt_arg, rt_setup_fn_t setup, | |||
40 | return rt_task; | 40 | return rt_task; |
41 | } | 41 | } |
42 | 42 | ||
43 | int __create_rt_task_edffm(rt_fn_t rt_prog, void *arg, int cpu, int wcet, | ||
44 | int period, lt_t *frac1, lt_t *frac2, | ||
45 | int cpu1, int cpu2, task_class_t class) | ||
46 | { | ||
47 | struct rt_task params; | ||
48 | params.cpu = cpu; | ||
49 | params.period = period; | ||
50 | params.exec_cost = wcet; | ||
51 | params.cls = class; | ||
52 | params.phase = 0; | ||
53 | /* enforce budget for tasks that might not use sleep_next_period() */ | ||
54 | params.budget_policy = QUANTUM_ENFORCEMENT; | ||
55 | |||
56 | /* edf-fm check on denominators for migratory tasks */ | ||
57 | if (frac1[1] != 0 && frac2[1] != 0) { | ||
58 | /* edf-fm migrat task */ | ||
59 | params.nr_cpus = 1; | ||
60 | params.cpus[0] = cpu1; | ||
61 | params.cpus[1] = cpu2; | ||
62 | params.fraction[0][0] = frac1[0]; | ||
63 | params.fraction[1][0] = frac1[1]; | ||
64 | params.fraction[0][1] = frac2[0]; | ||
65 | params.fraction[1][1] = frac2[1]; | ||
66 | } | ||
67 | |||
68 | return __launch_rt_task(rt_prog, arg, | ||
69 | (rt_setup_fn_t) set_rt_task_param, ¶ms); | ||
70 | } | ||
71 | |||
43 | int __create_rt_task(rt_fn_t rt_prog, void *arg, int cpu, int wcet, int period, | 72 | int __create_rt_task(rt_fn_t rt_prog, void *arg, int cpu, int wcet, int period, |
44 | task_class_t class) | 73 | task_class_t class) |
45 | { | 74 | { |