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