Changeset 25f7c57
- Timestamp:
- Mar 25, 2011, 3:55:41 AM (14 years ago)
- Children:
- ec9746d
- Parents:
- 111850c
- git-author:
- David Benjamin <davidben@mit.edu> (03/03/11 09:50:32)
- git-committer:
- David Benjamin <davidben@mit.edu> (03/25/11 03:55:41)
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
owl.c
r111850c r25f7c57 380 380 } 381 381 382 static void sig_handler( int sig, void *data) {382 static void sig_handler(const siginfo_t *siginfo, void *data) { 383 383 /* If it was an interrupt, set a flag so we can handle it earlier if 384 384 * needbe. sig_handler_main_thread will check the flag to make sure 385 385 * no one else took it. */ 386 if (sig == SIGINT) {386 if (siginfo->si_signo == SIGINT) { 387 387 owl_global_add_interrupt(&g); 388 388 } 389 389 /* Send a message to the main thread. */ 390 owl_select_post_task(sig_handler_main_thread, GINT_TO_POINTER(sig), NULL); 390 owl_select_post_task(sig_handler_main_thread, 391 GINT_TO_POINTER(siginfo->si_signo), NULL); 391 392 } 392 393 -
signal.c
r6eaafb0 r25f7c57 8 8 static sigset_t signal_set; 9 9 10 static void (*signal_cb)( int, void*);10 static void (*signal_cb)(const siginfo_t*, void*); 11 11 static void *signal_cbdata; 12 12 … … 19 19 * This function /must/ be called before any other threads are 20 20 * created. (Otherwise the signals will not get blocked correctly.) */ 21 void owl_signal_init(const sigset_t *set, void (*callback)( int, void*), void *data) {21 void owl_signal_init(const sigset_t *set, void (*callback)(const siginfo_t*, void*), void *data) { 22 22 int ret; 23 23 … … 41 41 static void *signal_thread_func(void *data) { 42 42 while (1) { 43 int signal;43 siginfo_t siginfo; 44 44 int ret; 45 45 46 ret = sigwait (&signal_set, &signal);47 /* TODO: Print an error? man page claims it never errors.*/48 if (ret !=0)46 ret = sigwaitinfo(&signal_set, &siginfo); 47 /* TODO: Print an error? */ 48 if (ret < 0) 49 49 continue; 50 50 51 signal_cb( signal, signal_cbdata);51 signal_cb(&siginfo, signal_cbdata); 52 52 /* Die on SIGTERM. */ 53 if (sig nal== SIGTERM)53 if (siginfo.si_signo == SIGTERM) 54 54 break; 55 55 }
Note: See TracChangeset
for help on using the changeset viewer.