|
[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 |