From d6e5eee7b7863d179e95962f0144c3daeba35a44 Mon Sep 17 00:00:00 2001 From: Glenn Elliott Date: Tue, 26 Nov 2013 14:42:45 -0500 Subject: Add support for job splitting. This patch adds support for job splittinig schedulers. The default split factor for jobs is 1 (unchanged behavior). --- bin/rtspin.c | 7 ++++++- src/litmus.c | 1 + src/task.c | 1 + 3 files changed, 8 insertions(+), 1 deletion(-) diff --git a/bin/rtspin.c b/bin/rtspin.c index 167741d..224a201 100644 --- a/bin/rtspin.c +++ b/bin/rtspin.c @@ -184,7 +184,7 @@ static int job(double exec_time, double program_end, int lock_od, double cs_leng } } -#define OPTSTR "p:z:c:wlveo:f:s:q:X:L:Q:" +#define OPTSTR "p:z:c:wlveo:f:s:q:X:L:Q:n:" int main(int argc, char** argv) { int ret; @@ -192,6 +192,7 @@ int main(int argc, char** argv) lt_t period; double wcet_ms, period_ms; unsigned int priority = LITMUS_LOWEST_PRIORITY; + int split_factor = 1; int migrate = 0; int cluster = 0; int cluster_size = 1; @@ -226,6 +227,9 @@ int main(int argc, char** argv) cluster = atoi(optarg); migrate = 1; break; + case 'n': + split_factor = atoi(optarg); + break; case 'z': cluster_size = atoi(optarg); break; @@ -334,6 +338,7 @@ int main(int argc, char** argv) init_rt_task_param(¶m); param.exec_cost = wcet; param.period = period; + param.split = split_factor; param.priority = priority; param.cls = class; param.budget_policy = (want_enforcement) ? diff --git a/src/litmus.c b/src/litmus.c index dce8e1b..febd7ed 100644 --- a/src/litmus.c +++ b/src/litmus.c @@ -103,6 +103,7 @@ void init_rt_task_param(struct rt_task* tp) tp->priority = LITMUS_LOWEST_PRIORITY; tp->budget_policy = NO_ENFORCEMENT; tp->release_policy = TASK_SPORADIC; + tp->split = 1; } task_class_t str2class(const char* str) diff --git a/src/task.c b/src/task.c index 5f2fa26..e519ca3 100644 --- a/src/task.c +++ b/src/task.c @@ -49,6 +49,7 @@ int __create_rt_task(rt_fn_t rt_prog, void *arg, int cluster, int cluster_size, params.exec_cost = wcet; params.cls = class; params.phase = 0; + params.split = 1; params.priority = priority; /* enforce budget for tasks that might not use sleep_next_period() */ params.budget_policy = QUANTUM_ENFORCEMENT; -- cgit v1.2.2