[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH 10/12] libxl: fork: Break out sigchld_installhandler_core
On Fri, 2014-01-17 at 16:24 +0000, Ian Jackson wrote: > 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> Acked-by: 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(); > _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |