Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 21 Feb 2018 11:28:44 +0800
From:      Julian Elischer <julian@freebsd.org>
To:        Eitan Adler <lists@eitanadler.com>
Cc:        FreeBSD Hackers <freebsd-hackers@freebsd.org>
Subject:   Re: Marking select(2) as restrict
Message-ID:  <83920964-9ad6-4019-14c5-3e16eff21f2e@freebsd.org>
In-Reply-To: <CACc-My27BA-VAuNmqD1Eah%2BusUwWA8PUxyux1HxehZrqE8G%2BZA@mail.gmail.com>
References:  <CAF6rxg=h_oMiUu7P=GAOQf_OySQM2w31hg6Kas%2B3jeEM3qq_Cg@mail.gmail.com> <CAF6rxgnt9c0n8i-nHQwoKGbZKF2hM5AZqEJnz0CLo26XOO4_sg@mail.gmail.com> <CACc-My27BA-VAuNmqD1Eah%2BusUwWA8PUxyux1HxehZrqE8G%2BZA@mail.gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help

> On 2/21/18, Eitan Adler <lists@eitanadler.com> wrote:
>> I filed a request for a slightly modified version of this patch to be
>> exp-run. I'm planning on committing unless there is significant
>> fallout or objections on this list.
>>
>> https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=225981
>>
>> On 15 February 2018 at 00:10, Eitan Adler <lists@eitanadler.com> wrote:
>>> Hi all,
>>>
>>> POSIX requires that the fd_set arguments in select(2) be marked as
>>> restrict. This patch attempts to implement that.
>>>
>>> (a) Am I missing anything?
>>> (b) Anything in particular to watch out for?
>>> (c) Assuming an exp-run passes any reason not to commit?
>>>
>>>
>>> Index: lib/libc/sys/select.2
>>> ===================================================================
>>> --- lib/libc/sys/select.2 (revision 329296)
>>> +++ lib/libc/sys/select.2 (working copy)
>>> @@ -39,7 +39,7 @@
>>>   .Sh SYNOPSIS
>>>   .In sys/select.h
>>>   .Ft int
>>> -.Fn select "int nfds" "fd_set *readfds" "fd_set *writefds" "fd_set
>>> *exceptfds" "struct timeval *timeout"
>>> +.Fn select "int nfds" "fd_set * restrict readfds" "fd_set * restrict
>>> writefds" "fd_set * restrict exceptfds" "struct timeval *timeout"
>>>   .Fn FD_SET fd &fdset
>>>   .Fn FD_CLR fd &fdset
>>>   .Fn FD_ISSET fd &fdset
>>> Index: lib/libc/sys/select.c
>>> ===================================================================
>>> --- lib/libc/sys/select.c (revision 329296)
>>> +++ lib/libc/sys/select.c (working copy)
>>> @@ -41,7 +41,7 @@ __weak_reference(__sys_select, __select);
>>>
>>>   #pragma weak select
>>>   int
>>> -select(int n, fd_set *rs, fd_set *ws, fd_set *es, struct timeval *t)
>>> +select(int n, fd_set * restrict rs, fd_set * restrict ws, fd_set *
>>> restrict es, struct timeval *t)
>>>   {
>>>
>>>    return (((int (*)(int, fd_set *, fd_set *, fd_set *, struct timeval *))
>>> Index: sys/sys/select.h
>>> ===================================================================
>>> --- sys/sys/select.h (revision 329296)
>>> +++ sys/sys/select.h (working copy)
>>> @@ -101,8 +101,7 @@ int pselect(int, fd_set *__restrict, fd_set *__res
>>>    const struct timespec *__restrict, const sigset_t *__restrict);
>>>   #ifndef _SELECT_DECLARED
>>>   #define _SELECT_DECLARED
>>> -/* XXX missing restrict type-qualifier */
>>> -int select(int, fd_set *, fd_set *, fd_set *, struct timeval *);
>>> +int select(int, fd_set *__restrict, fd_set *__restrict, fd_set
>>> *__restrict, struct timeval *);
>>>   #endif
>>>   __END_DECLS
>>>   #endif /* !_KERNEL */
>>>
>>>
>>> --
>>> Eitan Adler
>>
>>
>> --
>> Eitan Adler
>> _______________________________________________
>> freebsd-hackers@freebsd.org mailing list
>> https://lists.freebsd.org/mailman/listinfo/freebsd-hackers
>> To unsubscribe, send any mail to "freebsd-hackers-unsubscribe@freebsd.org"
>>
So, you are saying that the bitmaps can not be shared..
I can not think of a reason they would be shared but...
  I can also say that I can not think of a proof that there does not 
exist a case where it would make sense.

What is the potential gain?  and is it set so in other OS or standards?

Julian



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?83920964-9ad6-4019-14c5-3e16eff21f2e>