Marking select(2) as restrict

Eitan Adler lists at eitanadler.com
Wed Feb 21 04:52:05 UTC 2018


Adding standards mailing list

On Tuesday, 20 February 2018, Kevin Lo <kevlo at freebsd.org> wrote:

> On Tue, Feb 20, 2018 at 04:29:59PM -0800, Eitan Adler 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
>
> Please send your patch to standards at .  The freebsd-standards mailing list
> was created for precisely this purpose, thanks.
>
> > On 15 February 2018 at 00:10, Eitan Adler <lists at 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 at freebsd.org mailing list
> > https://lists.freebsd.org/mailman/listinfo/freebsd-hackers
> > To unsubscribe, send any mail to "
> freebsd-hackers-unsubscribe at freebsd.org"
> >
>


-- 
Sent from my Turing Machine


More information about the freebsd-standards mailing list