From 2d507260ee723f8302c5c97a9bda1cf00f30ec99 Mon Sep 17 00:00:00 2001 From: "Bjoern B. Brandenburg" Date: Sun, 3 Feb 2008 01:09:48 -0500 Subject: many changes - use declarations from kernel - get rid of stuipd system call macros --- src/litmus.c | 8 ++-- src/syscalls.c | 126 ++++++++++++++++++++++++++++++++++++--------------------- src/task.c | 25 ++---------- 3 files changed, 88 insertions(+), 71 deletions(-) (limited to 'src') 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 @@ #include "litmus.h" #include "internal.h" -void show_rt_param(rt_param_t* tp) +void show_rt_param(struct rt_task* tp) { printf("rt params:\n\t" - "exec_cost:\t%ld\n\tperiod:\t\t%ld\n\tcpu:\t%d\n", + "exec_cost:\t%llu\n\tperiod:\t\t%llu\n\tcpu:\t%d\n", tp->exec_cost, tp->period, tp->cpu); } @@ -30,11 +30,11 @@ task_class_t str2class(const char* str) int sporadic_task(unsigned long e, unsigned long p, int cpu, task_class_t cls) { - rt_param_t param; + struct rt_task param; param.exec_cost = e; param.period = p; param.cpu = cpu; - param.cls = cls; + param.cls = cls; return set_rt_task_param(gettid(), ¶m); } 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 @@ #include "litmus.h" -#include "syscalls.h" - struct np_flag; -/* Litmus syscalls definitions */ -#define __NR_sched_setpolicy 320 -#define __NR_sched_getpolicy 321 -#define __NR_set_rt_mode 322 -#define __NR_set_rt_task_param 323 -#define __NR_get_rt_task_param 324 -#define __NR_sleep_next_period 326 -#define __NR_scheduler_setup 327 -#define __NR_register_np_flag 328 -#define __NR_signal_exit_np 329 -#define __NR_od_openx 330 -#define __NR_od_close 331 -#define __NR_pi_down 332 -#define __NR_pi_up 333 -#define __NR_srp_down 334 -#define __NR_srp_up 335 -#define __NR_reg_task_srp_sem 336 -#define __NR_get_job_no 337 -#define __NR_wait_for_job_release 338 -#define __NR_set_service_levels 339 -#define __NR_get_cur_service_level 340 -#define __NR_reg_ics_cb 341 -#define __NR_start_wcs 342 -#define __NR_task_mode 343 - /* Syscall stub for setting RT mode and scheduling options */ -_syscall0(pid_t, gettid); - -_syscall2(int, set_rt_task_param, pid_t, pid, rt_param_t*, arg1); -_syscall2(int, get_rt_task_param, pid_t, pid, rt_param_t*, arg1); -_syscall0(int, sleep_next_period); -_syscall1(int, register_np_flag, struct np_flag*, flag); -_syscall0(int, signal_exit_np); - -_syscall4(int, od_openx, int, fd, obj_type_t, type, int, obj_id, - void*, config); -_syscall1(int, od_close, int, od); -_syscall1(int, pi_down, int, od); -_syscall1(int, pi_up, int, od); -_syscall1(int, srp_down, int, od); -_syscall1(int, srp_up, int, od); -_syscall1(int, reg_task_srp_sem, int, od); -_syscall1(int, get_job_no, unsigned int*, job_no); -_syscall1(int, wait_for_job_release, unsigned int, job_no); -_syscall1(int, task_mode, int, target_mode); +pid_t gettid(void) +{ + return syscall(__NR_gettid); +} + +int set_rt_task_param(pid_t pid, struct rt_task *param) +{ + return syscall(__NR_set_rt_task_param, pid, param); +} + +int get_rt_task_param(pid_t pid, struct rt_task *param) +{ + return syscall(__NR_get_rt_task_param, pid, param); +} + +int sleep_next_period(void) +{ + return syscall(__NR_sleep_next_period); +} + +int register_np_flag(struct np_flag *flag) +{ + return syscall(__NR_register_np_flag, flag); +} + +int signal_exit_np(void) +{ + return syscall(__NR_exit_np); +} + +int od_openx(int fd, obj_type_t type, int obj_id, void *config) +{ + return syscall(__NR_od_open, fd, type, obj_id, config); +} + +int od_close(int od) +{ + return syscall(__NR_od_close, od); +} + +int pi_down(int od) +{ + return syscall(__NR_pi_down, od); +} + +int pi_up(int od) +{ + return syscall(__NR_pi_up, od); +} + +int srp_down(int od) +{ + return syscall(__NR_srp_down, od); +} + +int srp_up(int od) +{ + return syscall(__NR_srp_up, od); +} + +int reg_task_srp_sem(int od) +{ + return syscall(__NR_reg_task_srp_sem, od); +} + +int get_job_no(unsigned int *job_no) +{ + return syscall(__NR_query_job_no, job_no); +} + +int wait_for_job_release(unsigned int job_no) +{ + return syscall(__NR_wait_for_job_release, job_no); +} + +int task_mode(int target_mode) +{ + return syscall(__NR_task_mode, target_mode); +} + 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, return rt_task; } -struct create_rt_param { - int cpu; - int wcet; - int period; - task_class_t class; -}; - -int setup_create_rt(int pid, struct create_rt_param* arg) -{ - rt_param_t params; - params.period = arg->period; - params.exec_cost = arg->wcet; - params.cpu = arg->cpu; - params.cls = arg->class; - return set_rt_task_param(pid, ¶ms); -} - int __create_rt_task(rt_fn_t rt_prog, void *arg, int cpu, int wcet, int period, task_class_t class) { - struct create_rt_param params; + struct rt_task params; params.cpu = cpu; params.period = period; - params.wcet = wcet; - params.class = class; + params.exec_cost = wcet; + params.cls = class; return __launch_rt_task(rt_prog, arg, - (rt_setup_fn_t) setup_create_rt, ¶ms); + (rt_setup_fn_t) set_rt_task_param, ¶ms); } int create_rt_task(rt_fn_t rt_prog, void *arg, int cpu, int wcet, int period) { -- cgit v1.2.2