From 55ac6f43d7bf0e3e4b3764fc8797a311b155a0a5 Mon Sep 17 00:00:00 2001 From: Mac Mollison Date: Tue, 28 Sep 2010 10:18:12 -0400 Subject: Update to accept criticality level parameter --- bin/rtspin.c | 10 ++++++++-- include/litmus.h | 2 ++ src/litmus.c | 16 ++++++++++++++++ 3 files changed, 26 insertions(+), 2 deletions(-) diff --git a/bin/rtspin.c b/bin/rtspin.c index f291869..201a406 100644 --- a/bin/rtspin.c +++ b/bin/rtspin.c @@ -133,7 +133,7 @@ static int job(double exec_time) return 0; } -#define OPTSTR "p:c:wld:v" +#define OPTSTR "p:c:wld:vm:" int main(int argc, char** argv) { @@ -150,6 +150,7 @@ int main(int argc, char** argv) int verbose = 0; double duration, start; task_class_t class = RT_CLASS_HARD; + crit_level_t crit = CRIT_LEVEL_C; progname = argv[0]; @@ -167,6 +168,11 @@ int main(int argc, char** argv) if (class == -1) usage("Unknown task class."); break; + case 'm': + crit = str2crit(optarg); + if (crit == -1) + usage("Unknown criticality level."); + break; case 'l': test_loop = 1; break; @@ -221,7 +227,7 @@ int main(int argc, char** argv) bail_out("could not migrate to target partition"); } - ret = sporadic_task_ns(wcet, period, 0, cpu, class, NO_ENFORCEMENT, migrate); + ret = sporadic_task_ns(wcet, period, 0, cpu, class, crit, NO_ENFORCEMENT, migrate); if (ret < 0) bail_out("could not setup rt task params"); diff --git a/include/litmus.h b/include/litmus.h index b798c92..c76f36e 100644 --- a/include/litmus.h +++ b/include/litmus.h @@ -38,6 +38,7 @@ int sporadic_task( int sporadic_task_ns( lt_t e, lt_t p, lt_t phase, int cpu, task_class_t cls, + crit_level_t crit, budget_policy_t budget_policy, int set_cpu_set); /* budget enforcement off by default in these macros */ @@ -95,6 +96,7 @@ int task_mode(int target_mode); void show_rt_param(struct rt_task* tp); task_class_t str2class(const char* str); +crit_level_t str2crit(const char* str); /* non-preemptive section support */ void enter_np(void); diff --git a/src/litmus.c b/src/litmus.c index d3cc6bb..5928d8a 100644 --- a/src/litmus.c +++ b/src/litmus.c @@ -29,6 +29,20 @@ task_class_t str2class(const char* str) return -1; } +crit_level_t str2crit(const char* srt) +{ + if (!strcmp(str, "a") || !strcmp(str, "A")) + return CRIT_LEVEL_A; + else if (!strcmp(str, "b") || !strcmp(str,"B")) + return CRIT_LEVEL_B; + else if (!strcmp(str, "c") || !strcmp(str,"C")) + return CRIT_LEVEL_C; + else if (!strcmp(str, "d") || !strcmp(str,"D")) + return CRIT_LEVEL_D; + else + return -1; +} + #define NS_PER_MS 1000000 /* only for best-effort execution: migrate to target_cpu */ @@ -51,6 +65,7 @@ int sporadic_task(lt_t e, lt_t p, lt_t phase, int sporadic_task_ns(lt_t e, lt_t p, lt_t phase, int cpu, task_class_t cls, + crit_level_t crit, budget_policy_t budget_policy, int set_cpu_set) { struct rt_task param; @@ -65,6 +80,7 @@ int sporadic_task_ns(lt_t e, lt_t p, lt_t phase, param.period = p; param.cpu = cpu; param.cls = cls; + param.crit = crit; param.phase = phase; param.budget_policy = budget_policy; -- cgit v1.2.2 From c17b92697e857333e380928183c21a79f2b34058 Mon Sep 17 00:00:00 2001 From: Mac Mollison Date: Tue, 28 Sep 2010 10:25:07 -0400 Subject: fix --- src/litmus.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/litmus.c b/src/litmus.c index 5928d8a..5cf560e 100644 --- a/src/litmus.c +++ b/src/litmus.c @@ -60,7 +60,7 @@ int sporadic_task(lt_t e, lt_t p, lt_t phase, budget_policy_t budget_policy, int set_cpu_set) { return sporadic_task_ns(e * NS_PER_MS, p * NS_PER_MS, phase * NS_PER_MS, - cpu, cls, budget_policy, set_cpu_set); + cpu, cls, CRIT_LEVEL_C, budget_policy, set_cpu_set); } int sporadic_task_ns(lt_t e, lt_t p, lt_t phase, -- cgit v1.2.2 From c5d64f7c7d5c4f9901acf8313e5a358c31125942 Mon Sep 17 00:00:00 2001 From: Mac Mollison Date: Tue, 28 Sep 2010 10:26:07 -0400 Subject: fix --- src/litmus.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/litmus.c b/src/litmus.c index 5cf560e..84e844c 100644 --- a/src/litmus.c +++ b/src/litmus.c @@ -29,7 +29,7 @@ task_class_t str2class(const char* str) return -1; } -crit_level_t str2crit(const char* srt) +crit_level_t str2crit(const char* str) { if (!strcmp(str, "a") || !strcmp(str, "A")) return CRIT_LEVEL_A; -- cgit v1.2.2 From 6a0a23e25042a74bc3af0f251ff059614b0d288e Mon Sep 17 00:00:00 2001 From: Mac Mollison Date: Wed, 6 Oct 2010 17:40:49 -0400 Subject: Allow rt_launch to work with sched_mcrit plugin --- bin/rt_launch.c | 13 ++++++++++--- include/litmus.h | 2 +- src/task.c | 5 +++-- 3 files changed, 14 insertions(+), 6 deletions(-) diff --git a/bin/rt_launch.c b/bin/rt_launch.c index 3863031..5c71d01 100644 --- a/bin/rt_launch.c +++ b/bin/rt_launch.c @@ -29,11 +29,12 @@ int launch(void *task_info_p) { } void usage(char *error) { - fprintf(stderr, "%s\nUsage: rt_launch [-w][-v][-p cpu][-c hrt | srt | be] wcet period program [arg1 arg2 ...]\n" + fprintf(stderr, "%s\nUsage: rt_launch [-w][-v][-p cpu][-c hrt | srt | be] [-m criticality] wcet period program [arg1 arg2 ...]\n" "\t-w\tSynchronous release\n" "\t-v\tVerbose\n" "\t-p\tcpu (or initial cpu)\n" "\t-c\tClass\n" + "\t-m\tCriticality\n" "\twcet, period in ms\n" "\tprogram to be launched\n", error); @@ -41,7 +42,7 @@ void usage(char *error) { } -#define OPTSTR "p:c:vw" +#define OPTSTR "p:c:vwm:" int main(int argc, char** argv) { @@ -51,6 +52,7 @@ int main(int argc, char** argv) int migrate = 0; int cpu = 0; int opt; + crit_level_t crit; int verbose = 0; int wait = 0; startup_info_t info; @@ -68,6 +70,11 @@ int main(int argc, char** argv) cpu = atoi(optarg); migrate = 1; break; + case 'm': + crit = str2crit(optarg); + if (crit == -1) + usage("Unknown criticality level."); + break; case 'c': class = str2class(optarg); if (class == -1) @@ -107,7 +114,7 @@ int main(int argc, char** argv) if (ret < 0) bail_out("could not migrate to target partition"); } - ret = __create_rt_task(launch, &info, cpu, wcet, period, class); + ret = __create_rt_task(launch, &info, cpu, crit, wcet, period, class); if (ret < 0) diff --git a/include/litmus.h b/include/litmus.h index c76f36e..632b9e1 100644 --- a/include/litmus.h +++ b/include/litmus.h @@ -84,7 +84,7 @@ typedef int (*rt_fn_t)(void*); /* These two functions configure the RT task to use enforced exe budgets */ int create_rt_task(rt_fn_t rt_prog, void *arg, int cpu, int wcet, int period); -int __create_rt_task(rt_fn_t rt_prog, void *arg, int cpu, int wcet, +int __create_rt_task(rt_fn_t rt_prog, void *arg, int cpu, crit_level_t crit, int wcet, int period, task_class_t cls); /* per-task modes */ diff --git a/src/task.c b/src/task.c index 4d237bd..11ee3cf 100644 --- a/src/task.c +++ b/src/task.c @@ -40,11 +40,12 @@ int __launch_rt_task(rt_fn_t rt_prog, void *rt_arg, rt_setup_fn_t setup, return rt_task; } -int __create_rt_task(rt_fn_t rt_prog, void *arg, int cpu, int wcet, int period, +int __create_rt_task(rt_fn_t rt_prog, void *arg, int cpu, crit_level_t crit, int wcet, int period, task_class_t class) { struct rt_task params; params.cpu = cpu; + params.crit = crit; params.period = period; params.exec_cost = wcet; params.cls = class; @@ -57,7 +58,7 @@ int __create_rt_task(rt_fn_t rt_prog, void *arg, int cpu, int wcet, int period, } int create_rt_task(rt_fn_t rt_prog, void *arg, int cpu, int wcet, int period) { - return __create_rt_task(rt_prog, arg, cpu, wcet, period, RT_CLASS_HARD); + return __create_rt_task(rt_prog, arg, cpu, CRIT_LEVEL_C, wcet, period, RT_CLASS_HARD); } -- cgit v1.2.2 From 866221a5efb5e4a44633ce8b12e2f76bbc48164b Mon Sep 17 00:00:00 2001 From: Mac Mollison Date: Wed, 6 Oct 2010 18:04:31 -0400 Subject: Minor --- bin/rt_launch.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bin/rt_launch.c b/bin/rt_launch.c index 5c71d01..39242a4 100644 --- a/bin/rt_launch.c +++ b/bin/rt_launch.c @@ -29,7 +29,7 @@ int launch(void *task_info_p) { } void usage(char *error) { - fprintf(stderr, "%s\nUsage: rt_launch [-w][-v][-p cpu][-c hrt | srt | be] [-m criticality] wcet period program [arg1 arg2 ...]\n" + fprintf(stderr, "%s\nUsage: rt_launch [-w][-v][-p cpu][-c hrt | srt | be][-m criticality] wcet period program [arg1 arg2 ...]\n" "\t-w\tSynchronous release\n" "\t-v\tVerbose\n" "\t-p\tcpu (or initial cpu)\n" -- cgit v1.2.2 From 48d21f2456a04171907343e4e422f19fff4d365f Mon Sep 17 00:00:00 2001 From: Jeremy Erickson Date: Sat, 22 Jan 2011 19:21:25 -0500 Subject: Fix rtspin parameter for criticality not taking a value --- bin/rtspin.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bin/rtspin.c b/bin/rtspin.c index f864172..20ce734 100644 --- a/bin/rtspin.c +++ b/bin/rtspin.c @@ -133,7 +133,7 @@ static int job(double exec_time) return 0; } -#define OPTSTR "p:c:wld:vem" +#define OPTSTR "p:c:m:wld:ve" int main(int argc, char** argv) { -- cgit v1.2.2