From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ian Jackson Subject: [PATCH 11/18] libxl: fork: Break out sigchld_sethandler_raw Date: Mon, 3 Feb 2014 16:14:44 +0000 Message-ID: <1391444091-22796-12-git-send-email-ian.jackson@eu.citrix.com> References: <1391444091-22796-1-git-send-email-ian.jackson@eu.citrix.com> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Return-path: In-Reply-To: <1391444091-22796-1-git-send-email-ian.jackson@eu.citrix.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xen.org Errors-To: xen-devel-bounces@lists.xen.org To: xen-devel@lists.xensource.com Cc: George Dunlap , Jim Fehlig , Ian Jackson , Ian Campbell List-Id: xen-devel@lists.xenproject.org We are going to want introduce another call site in the final substantive patch. Pure code motion; no functional change. Signed-off-by: Ian Jackson Cc: Jim Fehlig Cc: Ian Campbell --- v3: Remove now-unused variables from sigchld_installhandler_core --- tools/libxl/libxl_fork.c | 23 ++++++++++++++--------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/tools/libxl/libxl_fork.c b/tools/libxl/libxl_fork.c index ce8e8eb..084d86a 100644 --- a/tools/libxl/libxl_fork.c +++ b/tools/libxl/libxl_fork.c @@ -182,6 +182,19 @@ static void sigchld_handler(int signo) errno = esave; } +static void sigchld_sethandler_raw(void (*handler)(int), struct sigaction *old) +{ + struct sigaction ours; + int r; + + memset(&ours,0,sizeof(ours)); + ours.sa_handler = handler; + sigemptyset(&ours.sa_mask); + ours.sa_flags = SA_NOCLDSTOP | SA_RESTART; + r = sigaction(SIGCHLD, &ours, old); + assert(!r); +} + static void sigchld_removehandler_core(void) { struct sigaction was; @@ -196,18 +209,10 @@ static void sigchld_removehandler_core(void) 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); + sigchld_sethandler_raw(sigchld_handler, &sigchld_saved_action); assert(((void)"application must negotiate with libxl about SIGCHLD", !(sigchld_saved_action.sa_flags & SA_SIGINFO) && -- 1.7.10.4