Date: Tue, 22 May 2007 23:00:26 -0400 (EDT) From: "M. Warner Losh" <imp@bsdimp.com> To: peterjeremy@optushome.com.au Cc: des@des.no, antinvidia@gmail.com, freebsd-arch@freebsd.org Subject: Re: A problem with the select(2) interface Message-ID: <20070522.230026.1611667537.imp@bsdimp.com> In-Reply-To: <20070517094445.GD1149@turion.vk2pj.dyndns.org> References: <be0088ce0705160559y4c312c7aqcc45cdd81f8f0323@mail.gmail.com> <86fy5wkim5.fsf@dwp.des.no> <20070517094445.GD1149@turion.vk2pj.dyndns.org>
next in thread | previous in thread | raw e-mail | index | archive | help
In message: <20070517094445.GD1149@turion.vk2pj.dyndns.org>
Peter Jeremy <peterjeremy@optushome.com.au> writes:
: On 2007-May-16 15:23:14 +0200, Dag-Erling Smrgrav <des@des.no> wrote:
: >MQ <antinvidia@gmail.com> writes:
: >> No, that is not what I want. I think we'd better add a comments that
: >> we *DO NOT WRITE TO THAT ADDRESS*, what the manual describes is that
: >> there may be some platforms which write to that address. It's not the
: >> same thing.
: >
: >Some platforms update the timeval and some don't, so portable
: >applications must simply assume that its contents are undefined after
: >the select(2) call. It can not be relied on to contain either the
: >initial value nor the amount of time remaining. Thus your proposed
: >change is pointless.
:
: I disagree. The FreeBSD man pages should document the behaviour of
: FreeBSD. It's all very nice stating that SUSv2 allows a system to
: modify the value passed as timeout but (IMNSHO), it is more important
: to document what FreeBSD actually does.
:
: I agree that a _portable_ application must assume that timeout will
: be undefined but that's no reason for refusing to document what
: FreeBSD's behaviour actually is.
:
: There are two situations where the actual behaviour matters:
: 1) Porting a random application that assumes specific behaviour for
: select(). I need to know how FreeBSD behaves to know whether I
: need to patch the code or not.
: 2) I'm writing code that is specifically for FreeBSD. If I know
: timeout will not change, I can optimise the code to avoid having to
: re-initialise timeout before each select call.
Index: select.2
===================================================================
RCS file: /cache/ncvs/src/lib/libc/sys/select.2,v
retrieving revision 1.33
diff -u -r1.33 select.2
--- select.2 9 Jan 2007 00:28:15 -0000 1.33
+++ select.2 23 May 2007 03:00:14 -0000
@@ -222,3 +222,6 @@
by the
.Fn select
system call.
+.Fx
+does not modify the return value, which can cause problems for applications
+ported from other systems.
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20070522.230026.1611667537.imp>
