aboutsummaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
Diffstat (limited to 'include')
-rw-r--r--include/litmus.h36
-rw-r--r--include/syscalls.h38
2 files changed, 7 insertions, 67 deletions
diff --git a/include/litmus.h b/include/litmus.h
index 8918ae9..cf39f80 100644
--- a/include/litmus.h
+++ b/include/litmus.h
@@ -1,41 +1,16 @@
1#ifndef LITMUS_H 1#ifndef LITMUS_H
2#define LITMUS_H 2#define LITMUS_H
3 3
4#include <linux/rt_param.h>
4#include <sys/types.h> 5#include <sys/types.h>
5 6
6/* A real-time program. */
7typedef int (*rt_fn_t)(void*);
8
9/* different types of clients */
10typedef enum {
11 RT_CLASS_HARD,
12 RT_CLASS_SOFT,
13 RT_CLASS_BEST_EFFORT
14} task_class_t;
15
16/* Task RT params for schedulers */
17/* RT task parameters for scheduling extensions
18* These parameters are inherited during clone and therefore must
19* be explicitly set up before the task set is launched.
20*/
21typedef struct rt_param {
22 /* Execution cost */
23 unsigned long exec_cost;
24 /* Period */
25 unsigned long period;
26 /* Partition */
27 unsigned int cpu;
28 /* type of task */
29 task_class_t cls;
30} rt_param_t;
31
32typedef int pid_t; /* PID of a task */ 7typedef int pid_t; /* PID of a task */
33 8
34/* obtain the PID of a thread */ 9/* obtain the PID of a thread */
35pid_t gettid(void); 10pid_t gettid(void);
36 11
37int set_rt_task_param(pid_t pid, rt_param_t* param); 12int set_rt_task_param(pid_t pid, struct rt_task* param);
38int get_rt_task_param(pid_t pid, rt_param_t* param); 13int get_rt_task_param(pid_t pid, struct rt_task* param);
39 14
40/* setup helper */ 15/* setup helper */
41int sporadic_task(unsigned long exec_cost, unsigned long period, 16int sporadic_task(unsigned long exec_cost, unsigned long period,
@@ -77,6 +52,9 @@ int init_litmus(void);
77int init_rt_thread(void); 52int init_rt_thread(void);
78void exit_litmus(void); 53void exit_litmus(void);
79 54
55/* A real-time program. */
56typedef int (*rt_fn_t)(void*);
57
80int create_rt_task(rt_fn_t rt_prog, void *arg, int cpu, int wcet, int period); 58int create_rt_task(rt_fn_t rt_prog, void *arg, int cpu, int wcet, int period);
81int __create_rt_task(rt_fn_t rt_prog, void *arg, int cpu, int wcet, 59int __create_rt_task(rt_fn_t rt_prog, void *arg, int cpu, int wcet,
82 int period, task_class_t cls); 60 int period, task_class_t cls);
@@ -88,7 +66,7 @@ enum rt_task_mode_t {
88}; 66};
89int task_mode(int target_mode); 67int task_mode(int target_mode);
90 68
91void show_rt_param(rt_param_t* tp); 69void show_rt_param(struct rt_task* tp);
92task_class_t str2class(const char* str); 70task_class_t str2class(const char* str);
93 71
94/* non-preemptive section support */ 72/* non-preemptive section support */
diff --git a/include/syscalls.h b/include/syscalls.h
deleted file mode 100644
index 28f1a39..0000000
--- a/include/syscalls.h
+++ /dev/null
@@ -1,38 +0,0 @@
1#ifndef SYSCALLS_H
2#define SYSCALLS_H
3
4/* this is missing in newer linux/unistd.h versions */
5
6#define _syscall0(type,name) \
7type name(void) \
8{\
9 return syscall(__NR_##name);\
10}
11
12#define _syscall1(type,name,type1,arg1) \
13type name(type1 arg1) \
14{\
15 return syscall(__NR_##name, arg1);\
16}
17
18
19#define _syscall2(type,name,type1,arg1,type2,arg2) \
20type name(type1 arg1,type2 arg2) \
21{\
22 return syscall(__NR_##name, arg1, arg2);\
23}
24
25#define _syscall3(type,name,type1,arg1,type2,arg2,type3,arg3) \
26type name(type1 arg1,type2 arg2, type3 arg3) \
27{\
28 return syscall(__NR_##name, arg1, arg2, arg3); \
29}
30
31#define _syscall4(type,name,type1,arg1,type2,arg2,type3,arg3,type4,arg4)\
32type name(type1 arg1,type2 arg2, type3 arg3, type4 arg4) \
33{\
34 return syscall(__NR_##name, arg1, arg2, arg3, arg4); \
35}
36
37
38#endif