Date: Thu, 15 Feb 2018 00:10:19 -0800 From: Eitan Adler <lists@eitanadler.com> To: FreeBSD Hackers <freebsd-hackers@freebsd.org>, Warner Losh <imp@bsdimp.com> Subject: Marking select(2) as restrict Message-ID: <CAF6rxg=h_oMiUu7P=GAOQf_OySQM2w31hg6Kas%2B3jeEM3qq_Cg@mail.gmail.com>
next in thread | raw e-mail | index | archive | help
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
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CAF6rxg=h_oMiUu7P=GAOQf_OySQM2w31hg6Kas%2B3jeEM3qq_Cg>