From 9de8f0850ce4b34a849384d119fc9e5a6f3f8d17 Mon Sep 17 00:00:00 2001 From: "Bjoern B. Brandenburg" <bbb@cs.unc.edu> Date: Fri, 5 Oct 2007 12:41:53 -0400 Subject: Implement user space adaptive task launching interface. --- include/adaptive.h | 23 +++++++++++++++++++++++ include/litmus.h | 8 ++++++++ 2 files changed, 31 insertions(+) create mode 100644 include/adaptive.h (limited to 'include') diff --git a/include/adaptive.h b/include/adaptive.h new file mode 100644 index 0000000..a67c540 --- /dev/null +++ b/include/adaptive.h @@ -0,0 +1,23 @@ +#ifndef ADAPTIVE_H +#define ADAPTIVE_H + +#define MAX_SERVICE_LEVELS 10 + +typedef struct { + unsigned long exec_cost; + unsigned long period; + /* fixed point */ + unsigned long utility; +} service_level_t; + +int set_service_levels(pid_t pid, + unsigned int nr_levels, + service_level_t* levels); + +int get_cur_service_level(void); + +int create_adaptive_rt_task(rt_fn_t rt_prog, void *arg, + unsigned int no_levels, service_level_t* levels); + + +#endif diff --git a/include/litmus.h b/include/litmus.h index 3595919..01503aa 100644 --- a/include/litmus.h +++ b/include/litmus.h @@ -8,6 +8,7 @@ #define CLONE_REALTIME 0x10000000 typedef int (*rt_fn_t)(void*); +typedef int (*rt_setup_fn_t)(int pid, void* arg); /* Litmus scheduling policies */ typedef enum { @@ -99,6 +100,7 @@ void init_litmus(void); #define exit_litmus() {} + 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, task_class_t cls); @@ -111,4 +113,10 @@ void exit_np(void); int litmus_task_active(); + +/* low level operations, not intended for API use */ +int fork_rt(void); +int __launch_rt_task(rt_fn_t rt_prog, void *rt_arg, + rt_setup_fn_t setup, void* setup_arg); + #endif -- cgit v1.2.2