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>