From 4829f4175482e0a4ad8f282dd0441904c33e2f97 Mon Sep 17 00:00:00 2001 From: Glenn Elliott Date: Fri, 7 Sep 2012 23:22:38 -0400 Subject: Added signal-related comments. Made g++ friendly. --- src/litmus.c | 2 +- src/signal.c | 28 +++++++--------------------- src/task.c | 4 ++-- 3 files changed, 10 insertions(+), 24 deletions(-) (limited to 'src') diff --git a/src/litmus.c b/src/litmus.c index aaaeee3..0b7c561 100644 --- a/src/litmus.c +++ b/src/litmus.c @@ -26,7 +26,7 @@ task_class_t str2class(const char* str) else if (!strcmp(str, "be")) return RT_CLASS_BEST_EFFORT; else - return -1; + return (task_class_t)(-1); } #define NS_PER_MS 1000000 diff --git a/src/signal.c b/src/signal.c index a98ed78..bfe18b9 100644 --- a/src/signal.c +++ b/src/signal.c @@ -4,26 +4,13 @@ #include "litmus.h" #include "internal.h" +/* setjmp calls are stored on a singlely link list, + * one stack per thread. + */ static __thread litmus_sigjmp_t *g_sigjmp_tail = 0; -void throw_litmus_signal(int signum) -{ - litmus_sigjmp_t *lit_env; - - printf("WE GET SIGNAL!\n"); - lit_env = pop_sigjmp(); - if (lit_env) { - printf("received signal %d!\n", signum); - siglongjmp(lit_env->env, signum); - } - else { - /* silently ignore the signal. */ - } -} - void push_sigjmp(litmus_sigjmp_t *buf) { - printf("push\n"); buf->prev = g_sigjmp_tail; g_sigjmp_tail = buf; } @@ -31,7 +18,6 @@ void push_sigjmp(litmus_sigjmp_t *buf) litmus_sigjmp_t* pop_sigjmp(void) { litmus_sigjmp_t* ret; - printf("pop\n"); ret = g_sigjmp_tail; g_sigjmp_tail = (ret) ? ret->prev : NULL; return ret; @@ -46,7 +32,7 @@ static void reg_litmus_signals(unsigned long litmus_sig_mask, ret = sigaction(SIG_BUDGET, pAction, NULL); check("SIG_BUDGET"); } - /* more ... */ + /* more signals ... */ } void ignore_litmus_signals(unsigned long litmus_sig_mask) @@ -84,7 +70,7 @@ void block_litmus_signals(unsigned long litmus_sig_mask) if (litmus_sig_mask | SIG_BUDGET_MASK) { sigaddset(&sigs, SIG_BUDGET); } - /* more ... */ + /* more signals ... */ ret = sigprocmask(SIG_BLOCK, &sigs, NULL); check("SIG_BLOCK litmus signals"); @@ -108,11 +94,11 @@ void unblock_litmus_signals(unsigned long litmus_sig_mask) void longjmp_on_litmus_signal(int signum) { + /* We get signal! Main screen turn on! */ litmus_sigjmp_t *lit_env; - printf("WE GET SIGNAL!\n"); lit_env = pop_sigjmp(); if (lit_env) { - printf("received signal %d\n", signum); + /* What you say?! */ siglongjmp(lit_env->env, signum); /* restores signal mask */ } else { diff --git a/src/task.c b/src/task.c index 4d237bd..26fc15a 100644 --- a/src/task.c +++ b/src/task.c @@ -41,13 +41,13 @@ int __launch_rt_task(rt_fn_t rt_prog, void *rt_arg, rt_setup_fn_t setup, } int __create_rt_task(rt_fn_t rt_prog, void *arg, int cpu, int wcet, int period, - task_class_t class) + task_class_t rt_class) { struct rt_task params; params.cpu = cpu; params.period = period; params.exec_cost = wcet; - params.cls = class; + params.cls = rt_class; params.phase = 0; /* enforce budget for tasks that might not use sleep_next_period() */ params.budget_policy = QUANTUM_ENFORCEMENT; -- cgit v1.2.2