From owner-freebsd-threads@FreeBSD.ORG Fri Sep 10 01:57:34 2010 Return-Path: Delivered-To: freebsd-threads@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 6F1341065673 for ; Fri, 10 Sep 2010 01:57:34 +0000 (UTC) (envelope-from davidxu@freebsd.org) Received: from freefall.freebsd.org (freefall.freebsd.org [IPv6:2001:4f8:fff6::28]) by mx1.freebsd.org (Postfix) with ESMTP id 5D7768FC12; Fri, 10 Sep 2010 01:57:34 +0000 (UTC) Received: from [127.0.0.1] (localhost [127.0.0.1]) by freefall.freebsd.org (8.14.4/8.14.4) with ESMTP id o8A1vW6W033428; Fri, 10 Sep 2010 01:57:33 GMT (envelope-from davidxu@freebsd.org) Message-ID: <4C8A010D.6050805@freebsd.org> Date: Fri, 10 Sep 2010 09:57:33 +0000 From: David Xu User-Agent: Thunderbird 2.0.0.24 (X11/20100630) MIME-Version: 1.0 To: Jilles Tjoelker References: <20100906220041.GA4729@stack.nl> <4C86787E.6070908@freebsd.org> <20100908175609.GA30144@stack.nl> <4C88EF47.4010906@freebsd.org> <20100909225524.GC48144@stack.nl> In-Reply-To: <20100909225524.GC48144@stack.nl> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Cc: freebsd-threads@freebsd.org Subject: Re: sigwait() cancellation point X-BeenThere: freebsd-threads@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Threading on FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 10 Sep 2010 01:57:34 -0000 Jilles Tjoelker wrote: > Recent versions of glibc do this. They implement > sigwait/sigwaitinfo/sigtimedwait based on a single extended sigtimedwait > system call; sigwait differs from the others by retrying when it gets > EINTR. This is not documented very well in man pages (for example, man > sigwait might get you an ancient LinuxThreads man page). > > One reference: > http://lkml.indiana.edu/hypermail/linux/kernel/0508.0/0181.html > > Google also provides various examples of applications that treated any > sigwait() error as fatal and needed to be changed to work reliably on > systems where sigwait() may return EINTR (not just FreeBSD). > I have committed it, thanks!