From e2f01f98672c501b6ec4b445956b48041267138f Mon Sep 17 00:00:00 2001 From: Laurent Bercot Date: Wed, 17 Jun 2015 10:38:04 +0000 Subject: - Add support for SIGUSR1 for poweroff in s6-svscan - Optimize respawn delay in s6-supervise --- src/supervision/s6-svscan.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) (limited to 'src/supervision/s6-svscan.c') diff --git a/src/supervision/s6-svscan.c b/src/supervision/s6-svscan.c index e07ff35..7ab959c 100644 --- a/src/supervision/s6-svscan.c +++ b/src/supervision/s6-svscan.c @@ -109,6 +109,12 @@ static void intr (void) term() ; } +static void usr1 (void) +{ + finish_arg = "poweroff" ; + term() ; +} + static void handle_signals (void) { for (;;) @@ -124,6 +130,7 @@ static void handle_signals (void) case SIGQUIT : quit() ; break ; case SIGABRT : cont = 0 ; break ; case SIGINT : intr() ; break ; + case SIGUSR1 : usr1() ; break ; } } } @@ -152,7 +159,7 @@ static void handle_control (int fd) case 'i' : intr() ; return ; case 'q' : quit() ; return ; case '0' : finish_arg = "halt" ; term() ; return ; - case '7' : finish_arg = "poweroff" ; term() ; return ; + case '7' : usr1() ; return ; case '8' : finish_arg = "other" ; term() ; return ; default : { @@ -446,6 +453,7 @@ int main (int argc, char const *const *argv) sigaddset(&set, SIGQUIT) ; sigaddset(&set, SIGABRT) ; sigaddset(&set, SIGINT) ; + sigaddset(&set, SIGUSR1) ; if (selfpipe_trapset(&set) < 0) strerr_diefu1sys(111, "trap signals") ; } -- cgit v1.2.3