From 4cc5780a04d827e075a383b2c37a7fca304c3607 Mon Sep 17 00:00:00 2001 From: Bjoern Brandenburg Date: Fri, 9 May 2014 11:11:35 +0200 Subject: Modernize rt_launch; remove internal API cruft Switch rt_launch to use a more modern way to launch real-time tasks. This makes rt_launch more flexible, makes it more similar to rtspin, and also allows to let us get rid of a chunk of old, inflexible code in liblitmus that wasn't really serving any useful purpose anymore. --- src/task.c | 58 ---------------------------------------------------------- 1 file changed, 58 deletions(-) (limited to 'src/task.c') diff --git a/src/task.c b/src/task.c index cd78aa9..3e3950c 100644 --- a/src/task.c +++ b/src/task.c @@ -8,64 +8,6 @@ #include "litmus.h" #include "internal.h" -static void tperrorx(char* msg) -{ - fprintf(stderr, - "Task %d: %s: %m", - gettid(), msg); - exit(-1); -} - -/* common launch routine */ -int __launch_rt_task(rt_fn_t rt_prog, void *rt_arg, rt_setup_fn_t setup, - void* setup_arg) -{ - int ret; - int rt_task = fork(); - - if (rt_task == 0) { - /* we are the real-time task - * launch task and die when it is done - */ - rt_task = gettid(); - ret = setup(rt_task, setup_arg); - if (ret < 0) - tperrorx("could not setup task parameters"); - ret = task_mode(LITMUS_RT_TASK); - if (ret < 0) - tperrorx("could not become real-time task"); - exit(rt_prog(rt_arg)); - } - - return rt_task; -} - -int __create_rt_task(rt_fn_t rt_prog, void *arg, int cluster, - lt_t wcet, lt_t period, unsigned int priority, task_class_t class) -{ - struct rt_task params; - init_rt_task_param(¶ms); - params.cpu = domain_to_first_cpu(cluster); - params.period = period; - params.exec_cost = wcet; - params.cls = class; - params.phase = 0; - params.priority = priority; - /* enforce budget for tasks that might not use sleep_next_period() */ - params.budget_policy = QUANTUM_ENFORCEMENT; - - return __launch_rt_task(rt_prog, arg, - (rt_setup_fn_t) set_rt_task_param, ¶ms); -} - -int create_rt_task(rt_fn_t rt_prog, void *arg, int cluster, - lt_t wcet, lt_t period, unsigned int prio) -{ - return __create_rt_task(rt_prog, arg, cluster, wcet, period, - prio, RT_CLASS_HARD); -} - - #define SCHED_NORMAL 0 int task_mode(int mode) -- cgit v1.2.2