X-Git-Url: http://git.openwrt.org/?p=project%2Flibubox.git;a=blobdiff_plain;f=uloop.c;h=cd3de85e1435140c2807a75444848705f1f9b6ab;hp=af84737c28ce6112337ee2362e23444885d7c57f;hb=1257a38a6e64511207bb3b077ca7e8e1a3338fc1;hpb=93be9309b86d07eaa3b83ad07d380ca3092b29a1 diff --git a/uloop.c b/uloop.c index af84737..cd3de85 100644 --- a/uloop.c +++ b/uloop.c @@ -56,7 +56,6 @@ static struct uloop_fd_stack *fd_stack = NULL; static struct list_head timeouts = LIST_HEAD_INIT(timeouts); static struct list_head processes = LIST_HEAD_INIT(processes); -static int signal_fd = -1; static int poll_fd = -1; bool uloop_cancelled = false; static bool do_sigchld = false; @@ -64,8 +63,6 @@ static bool do_sigchld = false; static struct uloop_fd_event cur_fds[ULOOP_MAX_EVENTS]; static int cur_fd, cur_nfds; -static void uloop_handle_signal(int signo); - #ifdef USE_KQUEUE #include "uloop-kqueue.c" #endif @@ -331,17 +328,14 @@ static void uloop_handle_processes(void) } -static void uloop_handle_signal(int signo) +static void uloop_handle_sigint(int signo) { - switch (signo) { - case SIGINT: - case SIGQUIT: - case SIGTERM: - uloop_cancelled = true; - break; - case SIGCHLD: - do_sigchld = true; - } + uloop_cancelled = true; +} + +static void uloop_sigchld(int signo) +{ + do_sigchld = true; } static void uloop_install_handler(int signum, void (*handler)(int), struct sigaction* old, bool add) @@ -392,14 +386,11 @@ static void uloop_ignore_signal(int signum, bool ignore) static void uloop_setup_signals(bool add) { - static struct sigaction old_sigint, old_sigchld, old_sigterm, old_sigquit; - - uloop_setup_signalfd(add); + static struct sigaction old_sigint, old_sigchld, old_sigterm; - uloop_install_handler(SIGINT, uloop_handle_signal, &old_sigint, add); - uloop_install_handler(SIGTERM, uloop_handle_signal, &old_sigterm, add); - uloop_install_handler(SIGQUIT, uloop_handle_signal, &old_sigquit, add); - uloop_install_handler(SIGCHLD, uloop_handle_signal, &old_sigchld, add); + uloop_install_handler(SIGINT, uloop_handle_sigint, &old_sigint, add); + uloop_install_handler(SIGTERM, uloop_handle_sigint, &old_sigterm, add); + uloop_install_handler(SIGCHLD, uloop_sigchld, &old_sigchld, add); uloop_ignore_signal(SIGPIPE, add); } @@ -486,11 +477,6 @@ void uloop_run(void) void uloop_done(void) { - if (signal_fd >= 0) { - close(signal_fd); - signal_fd = -1; - } - if (poll_fd < 0) return;