Marking select(2) as restrict
Eitan Adler
lists at eitanadler.com
Thu Feb 15 08:10:52 UTC 2018
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
More information about the freebsd-hackers
mailing list