Subject: Re: CVS commit: src/lib/libc/rpc
To: Rui Paulo <rpaulo@netbsd.org>
From: Chuck Silvers <chuq@chuq.com>
List: source-changes
Date: 11/05/2005 08:08:12
hi,

this change re-introduces the bug that the previous change fixed,
namely that signals do not interrupt the syscall that's waiting
for a packet to arrive or the timeout to expire.  for this to work,
it would need to add all previously-unmasked signals to the kqueue
event list (since there doesn't appear to be a way to ask for
multiple signals as one event).

since there's only 1 file descriptor in this case, it seems better
to just go back to the previous pollts() implementation.

separately, shouldn't pollts() have replacement version in libpthread
so that changes to the signal mask only affect the current thread's
mask instead of the process-global mask?

-Chuck


On Thu, Oct 13, 2005 at 11:40:08PM +0000, Rui Paulo wrote:
> 
> Module Name:	src
> Committed By:	rpaulo
> Date:		Thu Oct 13 23:40:08 UTC 2005
> 
> Modified Files:
> 	src/lib/libc/rpc: clnt_dg.c
> 
> Log Message:
> Use the kqueue(2) framework instead of the poll(2) system call to wait
> for replies and timeouts in the conectionless (UDP) RPC client
> code. Based on similar changes from FreeBSD in rev 1.15.
> 
> Reviewed by Christos Zoulas.
> 
> 
> To generate a diff of this commit:
> cvs rdiff -r1.17 -r1.18 src/lib/libc/rpc/clnt_dg.c
> 
> Please note that diffs are not public domain; they are subject to the
> copyright notices on the relevant files.