[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [PATCH 10/12] libxl: fork: Break out sigchld_installhandler_core
Pure code motion. This is going to make the final substantive patch easier to read. Signed-off-by: Ian Jackson <Ian.Jackson@xxxxxxxxxxxxx> Cc: Jim Fehlig <jfehlig@xxxxxxxx> Cc: Ian Campbell <Ian.Campbell@xxxxxxxxxx> --- tools/libxl/libxl_fork.c | 38 ++++++++++++++++++++++---------------- 1 file changed, 22 insertions(+), 16 deletions(-) diff --git a/tools/libxl/libxl_fork.c b/tools/libxl/libxl_fork.c index a15af8e..ce8e8eb 100644 --- a/tools/libxl/libxl_fork.c +++ b/tools/libxl/libxl_fork.c @@ -194,6 +194,27 @@ static void sigchld_removehandler_core(void) sigchld_owner = 0; } +static void sigchld_installhandler_core(libxl__gc *gc) +{ + struct sigaction ours; + int r; + + assert(!sigchld_owner); + sigchld_owner = CTX; + + memset(&ours,0,sizeof(ours)); + ours.sa_handler = sigchld_handler; + sigemptyset(&ours.sa_mask); + ours.sa_flags = SA_NOCLDSTOP | SA_RESTART; + r = sigaction(SIGCHLD, &ours, &sigchld_saved_action); + assert(!r); + + assert(((void)"application must negotiate with libxl about SIGCHLD", + !(sigchld_saved_action.sa_flags & SA_SIGINFO) && + (sigchld_saved_action.sa_handler == SIG_DFL || + sigchld_saved_action.sa_handler == SIG_IGN))); +} + void libxl__sigchld_notneeded(libxl__gc *gc) /* non-reentrant, idempotent */ { int rc; @@ -236,22 +257,7 @@ int libxl__sigchld_needed(libxl__gc *gc) /* non-reentrant, idempotent */ atfork_lock(); if (sigchld_owner != CTX) { - struct sigaction ours; - - assert(!sigchld_owner); - sigchld_owner = CTX; - - memset(&ours,0,sizeof(ours)); - ours.sa_handler = sigchld_handler; - sigemptyset(&ours.sa_mask); - ours.sa_flags = SA_NOCLDSTOP | SA_RESTART; - r = sigaction(SIGCHLD, &ours, &sigchld_saved_action); - assert(!r); - - assert(((void)"application must negotiate with libxl about SIGCHLD", - !(sigchld_saved_action.sa_flags & SA_SIGINFO) && - (sigchld_saved_action.sa_handler == SIG_DFL || - sigchld_saved_action.sa_handler == SIG_IGN))); + sigchld_installhandler_core(gc); } atfork_unlock(); -- 1.7.10.4 _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |