From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ian Campbell Subject: Re: [PATCH 3/6] libxl: events: Deregister, don't just modify, sigchld pipe fd Date: Fri, 28 Nov 2014 12:48:52 +0000 Message-ID: <1417178932.23604.38.camel@citrix.com> References: <1417083745.12784.1.camel@citrix.com> <1417112870-31894-1-git-send-email-ian.jackson@eu.citrix.com> <1417112870-31894-4-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: <1417112870-31894-4-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: Ian Jackson Cc: Jim Fehlig , xen-devel@lists.xensource.com List-Id: xen-devel@lists.xenproject.org On Thu, 2014-11-27 at 18:27 +0000, Ian Jackson wrote: > We want to have no fd events registered when we are idle. This > implies that we must be able to deregister our interest in the sigchld > self-pipe fd, not just modify to request no events. > > Signed-off-by: Ian Jackson Acked-by: Ian Campbell I think in principal there is now some redundant code in libxl__sigchld_needed which calls modify to set POLLIN if the fd is not registered. I think it's redundant because now the fd is registered iff it is looking for POLLIN. > --- > tools/libxl/libxl_fork.c | 9 +-------- > 1 file changed, 1 insertion(+), 8 deletions(-) > > diff --git a/tools/libxl/libxl_fork.c b/tools/libxl/libxl_fork.c > index fa15095..144208a 100644 > --- a/tools/libxl/libxl_fork.c > +++ b/tools/libxl/libxl_fork.c > @@ -372,15 +372,8 @@ static void sigchld_user_remove(libxl_ctx *ctx) /* idempotent */ > > void libxl__sigchld_notneeded(libxl__gc *gc) /* non-reentrant, idempotent */ > { > - int rc; > - > sigchld_user_remove(CTX); > - > - if (libxl__ev_fd_isregistered(&CTX->sigchld_selfpipe_efd)) { > - rc = libxl__ev_fd_modify(gc, &CTX->sigchld_selfpipe_efd, 0); > - if (rc) > - libxl__ev_fd_deregister(gc, &CTX->sigchld_selfpipe_efd); > - } > + libxl__ev_fd_deregister(gc, &CTX->sigchld_selfpipe_efd); > } > > int libxl__sigchld_needed(libxl__gc *gc) /* non-reentrant, idempotent */