aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorBjoern B. Brandenburg <bbb@cs.unc.edu>2008-02-03 01:09:48 -0500
committerBjoern B. Brandenburg <bbb@cs.unc.edu>2008-02-03 01:09:48 -0500
commit2d507260ee723f8302c5c97a9bda1cf00f30ec99 (patch)
tree033231fa56c53c67916cbc1f1a05d9560ef1d4ab /src
parent526afdfb333ca29170fd210b08860ac2a4c141ed (diff)
many changes
- use declarations from kernel - get rid of stuipd system call macros
Diffstat (limited to 'src')
-rw-r--r--src/litmus.c8
-rw-r--r--src/syscalls.c126
-rw-r--r--src/task.c25
3 files changed, 88 insertions, 71 deletions
diff --git a/src/litmus.c b/src/litmus.c
index 8f5dfe8..6503088 100644
--- a/src/litmus.c
+++ b/src/litmus.c
@@ -8,10 +8,10 @@
8#include "litmus.h" 8#include "litmus.h"
9#include "internal.h" 9#include "internal.h"
10 10
11void show_rt_param(rt_param_t* tp) 11void show_rt_param(struct rt_task* tp)
12{ 12{
13 printf("rt params:\n\t" 13 printf("rt params:\n\t"
14 "exec_cost:\t%ld\n\tperiod:\t\t%ld\n\tcpu:\t%d\n", 14 "exec_cost:\t%llu\n\tperiod:\t\t%llu\n\tcpu:\t%d\n",
15 tp->exec_cost, tp->period, tp->cpu); 15 tp->exec_cost, tp->period, tp->cpu);
16} 16}
17 17
@@ -30,11 +30,11 @@ task_class_t str2class(const char* str)
30int sporadic_task(unsigned long e, unsigned long p, 30int sporadic_task(unsigned long e, unsigned long p,
31 int cpu, task_class_t cls) 31 int cpu, task_class_t cls)
32{ 32{
33 rt_param_t param; 33 struct rt_task param;
34 param.exec_cost = e; 34 param.exec_cost = e;
35 param.period = p; 35 param.period = p;
36 param.cpu = cpu; 36 param.cpu = cpu;
37 param.cls = cls; 37 param.cls = cls;
38 return set_rt_task_param(gettid(), &param); 38 return set_rt_task_param(gettid(), &param);
39} 39}
40 40
diff --git a/src/syscalls.c b/src/syscalls.c
index 0924818..40f5f7f 100644
--- a/src/syscalls.c
+++ b/src/syscalls.c
@@ -8,53 +8,87 @@
8 8
9#include "litmus.h" 9#include "litmus.h"
10 10
11#include "syscalls.h"
12
13struct np_flag; 11struct np_flag;
14 12
15/* Litmus syscalls definitions */
16#define __NR_sched_setpolicy 320
17#define __NR_sched_getpolicy 321
18#define __NR_set_rt_mode 322
19#define __NR_set_rt_task_param 323
20#define __NR_get_rt_task_param 324
21#define __NR_sleep_next_period 326
22#define __NR_scheduler_setup 327
23#define __NR_register_np_flag 328
24#define __NR_signal_exit_np 329
25#define __NR_od_openx 330
26#define __NR_od_close 331
27#define __NR_pi_down 332
28#define __NR_pi_up 333
29#define __NR_srp_down 334
30#define __NR_srp_up 335
31#define __NR_reg_task_srp_sem 336
32#define __NR_get_job_no 337
33#define __NR_wait_for_job_release 338
34#define __NR_set_service_levels 339
35#define __NR_get_cur_service_level 340
36#define __NR_reg_ics_cb 341
37#define __NR_start_wcs 342
38#define __NR_task_mode 343
39
40/* Syscall stub for setting RT mode and scheduling options */ 13/* Syscall stub for setting RT mode and scheduling options */
41 14
42_syscall0(pid_t, gettid); 15pid_t gettid(void)
43 16{
44_syscall2(int, set_rt_task_param, pid_t, pid, rt_param_t*, arg1); 17 return syscall(__NR_gettid);
45_syscall2(int, get_rt_task_param, pid_t, pid, rt_param_t*, arg1); 18}
46_syscall0(int, sleep_next_period); 19
47_syscall1(int, register_np_flag, struct np_flag*, flag); 20int set_rt_task_param(pid_t pid, struct rt_task *param)
48_syscall0(int, signal_exit_np); 21{
49 22 return syscall(__NR_set_rt_task_param, pid, param);
50_syscall4(int, od_openx, int, fd, obj_type_t, type, int, obj_id, 23}
51 void*, config); 24
52_syscall1(int, od_close, int, od); 25int get_rt_task_param(pid_t pid, struct rt_task *param)
53_syscall1(int, pi_down, int, od); 26{
54_syscall1(int, pi_up, int, od); 27 return syscall(__NR_get_rt_task_param, pid, param);
55_syscall1(int, srp_down, int, od); 28}
56_syscall1(int, srp_up, int, od); 29
57_syscall1(int, reg_task_srp_sem, int, od); 30int sleep_next_period(void)
58_syscall1(int, get_job_no, unsigned int*, job_no); 31{
59_syscall1(int, wait_for_job_release, unsigned int, job_no); 32 return syscall(__NR_sleep_next_period);
60_syscall1(int, task_mode, int, target_mode); 33}
34
35int register_np_flag(struct np_flag *flag)
36{
37 return syscall(__NR_register_np_flag, flag);
38}
39
40int signal_exit_np(void)
41{
42 return syscall(__NR_exit_np);
43}
44
45int od_openx(int fd, obj_type_t type, int obj_id, void *config)
46{
47 return syscall(__NR_od_open, fd, type, obj_id, config);
48}
49
50int od_close(int od)
51{
52 return syscall(__NR_od_close, od);
53}
54
55int pi_down(int od)
56{
57 return syscall(__NR_pi_down, od);
58}
59
60int pi_up(int od)
61{
62 return syscall(__NR_pi_up, od);
63}
64
65int srp_down(int od)
66{
67 return syscall(__NR_srp_down, od);
68}
69
70int srp_up(int od)
71{
72 return syscall(__NR_srp_up, od);
73}
74
75int reg_task_srp_sem(int od)
76{
77 return syscall(__NR_reg_task_srp_sem, od);
78}
79
80int get_job_no(unsigned int *job_no)
81{
82 return syscall(__NR_query_job_no, job_no);
83}
84
85int wait_for_job_release(unsigned int job_no)
86{
87 return syscall(__NR_wait_for_job_release, job_no);
88}
89
90int task_mode(int target_mode)
91{
92 return syscall(__NR_task_mode, target_mode);
93}
94
diff --git a/src/task.c b/src/task.c
index 47d68e1..7cfa6ce 100644
--- a/src/task.c
+++ b/src/task.c
@@ -37,33 +37,16 @@ int __launch_rt_task(rt_fn_t rt_prog, void *rt_arg, rt_setup_fn_t setup,
37 return rt_task; 37 return rt_task;
38} 38}
39 39
40struct create_rt_param {
41 int cpu;
42 int wcet;
43 int period;
44 task_class_t class;
45};
46
47int setup_create_rt(int pid, struct create_rt_param* arg)
48{
49 rt_param_t params;
50 params.period = arg->period;
51 params.exec_cost = arg->wcet;
52 params.cpu = arg->cpu;
53 params.cls = arg->class;
54 return set_rt_task_param(pid, &params);
55}
56
57int __create_rt_task(rt_fn_t rt_prog, void *arg, int cpu, int wcet, int period, 40int __create_rt_task(rt_fn_t rt_prog, void *arg, int cpu, int wcet, int period,
58 task_class_t class) 41 task_class_t class)
59{ 42{
60 struct create_rt_param params; 43 struct rt_task params;
61 params.cpu = cpu; 44 params.cpu = cpu;
62 params.period = period; 45 params.period = period;
63 params.wcet = wcet; 46 params.exec_cost = wcet;
64 params.class = class; 47 params.cls = class;
65 return __launch_rt_task(rt_prog, arg, 48 return __launch_rt_task(rt_prog, arg,
66 (rt_setup_fn_t) setup_create_rt, &params); 49 (rt_setup_fn_t) set_rt_task_param, &params);
67} 50}
68 51
69int create_rt_task(rt_fn_t rt_prog, void *arg, int cpu, int wcet, int period) { 52int create_rt_task(rt_fn_t rt_prog, void *arg, int cpu, int wcet, int period) {