diff options
author | Bjoern B. Brandenburg <bbb@cs.unc.edu> | 2008-01-18 15:15:47 -0500 |
---|---|---|
committer | Bjoern B. Brandenburg <bbb@cs.unc.edu> | 2008-01-18 15:15:47 -0500 |
commit | cfba01b0673c5d5572c46e5d32819a60b2dbff3c (patch) | |
tree | 5a44339c4ef3d93a8f4093eb5f4b024604957fc8 | |
parent | a1035dd13b32bf6dee0794309007eb2582921d24 (diff) |
[ABI] add task_mode_transition system call
-rw-r--r-- | include/litmus.h | 10 | ||||
-rw-r--r-- | src/litmus.c | 13 |
2 files changed, 17 insertions, 6 deletions
diff --git a/include/litmus.h b/include/litmus.h index 06f84bb..b0095e3 100644 --- a/include/litmus.h +++ b/include/litmus.h | |||
@@ -145,6 +145,16 @@ void init_litmus(void); | |||
145 | int create_rt_task(rt_fn_t rt_prog, void *arg, int cpu, int wcet, int period); | 145 | int create_rt_task(rt_fn_t rt_prog, void *arg, int cpu, int wcet, int period); |
146 | int __create_rt_task(rt_fn_t rt_prog, void *arg, int cpu, int wcet, | 146 | int __create_rt_task(rt_fn_t rt_prog, void *arg, int cpu, int wcet, |
147 | int period, task_class_t cls); | 147 | int period, task_class_t cls); |
148 | |||
149 | |||
150 | /* per-task modes */ | ||
151 | enum rt_task_mode_t { | ||
152 | BACKGROUND_TASK = 0, | ||
153 | LITMUS_RT_TASK = 1 | ||
154 | }; | ||
155 | int task_mode_transition(int target_mode); | ||
156 | |||
157 | |||
148 | const char* get_scheduler_name(spolicy scheduler); | 158 | const char* get_scheduler_name(spolicy scheduler); |
149 | void show_rt_param(rt_param_t* tp); | 159 | void show_rt_param(rt_param_t* tp); |
150 | task_class_t str2class(const char* str); | 160 | task_class_t str2class(const char* str); |
diff --git a/src/litmus.c b/src/litmus.c index 15f7e55..5be0b41 100644 --- a/src/litmus.c +++ b/src/litmus.c | |||
@@ -316,12 +316,12 @@ void init_litmus(void) | |||
316 | #define __NR_srp_up 335 | 316 | #define __NR_srp_up 335 |
317 | #define __NR_reg_task_srp_sem 336 | 317 | #define __NR_reg_task_srp_sem 336 |
318 | #define __NR_get_job_no 337 | 318 | #define __NR_get_job_no 337 |
319 | #define __NR_wait_for_job_release 338 | 319 | #define __NR_wait_for_job_release 338 |
320 | #define __NR_set_service_levels 339 | 320 | #define __NR_set_service_levels 339 |
321 | #define __NR_get_cur_service_level 340 | 321 | #define __NR_get_cur_service_level 340 |
322 | #define __NR_reg_ics_cb 341 | 322 | #define __NR_reg_ics_cb 341 |
323 | #define __NR_start_wcs 342 | 323 | #define __NR_start_wcs 342 |
324 | 324 | #define __NR_task_mode_transition 343 | |
325 | 325 | ||
326 | /* Syscall stub for setting RT mode and scheduling options */ | 326 | /* Syscall stub for setting RT mode and scheduling options */ |
327 | _syscall0(spolicy, sched_getpolicy); | 327 | _syscall0(spolicy, sched_getpolicy); |
@@ -348,3 +348,4 @@ _syscall1(int, wait_for_job_release, unsigned int, job_no); | |||
348 | 348 | ||
349 | _syscall1(int, start_wcs, int, od); | 349 | _syscall1(int, start_wcs, int, od); |
350 | _syscall1(int, reg_ics_cb, struct ics_cb*, ics_cb); | 350 | _syscall1(int, reg_ics_cb, struct ics_cb*, ics_cb); |
351 | _syscall1(int, task_mode_transition, int, target_mode); | ||