[klibc] [PATCH] Fix <sys/time.h> for Linux 3.5.1
Colin Watson
cjwatson at ubuntu.com
Tue Sep 25 04:31:16 PDT 2012
With Linux 3.5.1, 'make test' fails with:
usr/klibc/tests/select.c: In function ‘main’:
usr/klibc/tests/select.c:31:14: error: ‘FD_SETSIZE’ undeclared (first use in this function)
usr/klibc/tests/select.c:31:14: note: each undeclared identifier is reported only once for each function it appears in
This is due to Linux commit 8ded2bbc1845e19c771eb55209aab166ef011243.
Handle it by making sure that FD_SETSIZE is defined.
---
usr/include/sys/time.h | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/usr/include/sys/time.h b/usr/include/sys/time.h
index 7a2f8b9..178a4c6 100644
--- a/usr/include/sys/time.h
+++ b/usr/include/sys/time.h
@@ -15,6 +15,8 @@
double-underscore ones, except __NFDBITS, __FD_SETSIZE and
__FDSET_LONGS which are defined in <linux/posix_types.h>.
+ From 3.5.1, <linux/time.h> does not even define FD_ZERO etc.
+
Unfortunately, some architectures define the double-underscore ones
as inlines, so we can't use a simple #ifdef test. Thus, the only
safe option remaining is to #undef the top-level macros. */
@@ -23,6 +25,7 @@
#undef FD_SET
#undef FD_CLR
#undef FD_ISSET
+#undef FD_SETSIZE
__extern void *memset(void *, int, size_t);
static inline void FD_ZERO(fd_set *__fdsetp)
@@ -45,6 +48,8 @@ static inline int FD_ISSET(int __fd, fd_set *__fdsetp)
(__fd % BITS_PER_LONG)) & 1;
}
+#define FD_SETSIZE __FD_SETSIZE
+
__extern int gettimeofday(struct timeval *, struct timezone *);
__extern int settimeofday(const struct timeval *, const struct timezone *);
__extern int getitimer(int, struct itimerval *);
--
1.7.10.4
More information about the klibc
mailing list