diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/litmus.c | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/src/litmus.c b/src/litmus.c index 65ad294..9a2ebea 100644 --- a/src/litmus.c +++ b/src/litmus.c | |||
@@ -218,6 +218,17 @@ void exit_np(void) | |||
218 | } | 218 | } |
219 | } | 219 | } |
220 | 220 | ||
221 | static int exit_requested = 0; | ||
222 | |||
223 | static void sig_handler(int sig) | ||
224 | { | ||
225 | exit_requested = 1; | ||
226 | } | ||
227 | |||
228 | int litmus_task_active(void) | ||
229 | { | ||
230 | return !exit_requested; | ||
231 | } | ||
221 | 232 | ||
222 | #define check(str) if (ret == -1) {perror(str); fprintf(stderr, \ | 233 | #define check(str) if (ret == -1) {perror(str); fprintf(stderr, \ |
223 | "Could not initialize LITMUS^RT, aborting...\n"); exit(1);} | 234 | "Could not initialize LITMUS^RT, aborting...\n"); exit(1);} |
@@ -232,6 +243,9 @@ void init_litmus(void) | |||
232 | check("mlockall"); | 243 | check("mlockall"); |
233 | ret = register_np_flag(&np_flag); | 244 | ret = register_np_flag(&np_flag); |
234 | check("register_np_flag"); | 245 | check("register_np_flag"); |
246 | signal(SIGINT, sig_handler); | ||
247 | signal(SIGTERM, sig_handler); | ||
248 | signal(SIGHUP, sig_handler); | ||
235 | } | 249 | } |
236 | 250 | ||
237 | 251 | ||