svn commit: trunk/uClibc/libc/sysdeps/linux/common

vapier at uclibc.org vapier at uclibc.org
Sat Sep 15 10:57:10 UTC 2007


Author: vapier
Date: 2007-09-15 03:57:09 -0700 (Sat, 15 Sep 2007)
New Revision: 19847

Log:
if __NR__newselect and __NR_select are unavailable, fall back to __NR_pselect6

Modified:
   trunk/uClibc/libc/sysdeps/linux/common/select.c


Changeset:
Modified: trunk/uClibc/libc/sysdeps/linux/common/select.c
===================================================================
--- trunk/uClibc/libc/sysdeps/linux/common/select.c	2007-09-15 09:24:42 UTC (rev 19846)
+++ trunk/uClibc/libc/sysdeps/linux/common/select.c	2007-09-15 10:57:09 UTC (rev 19847)
@@ -12,6 +12,27 @@
 
 extern __typeof(select) __libc_select;
 
+#if !defined(__NR__newselect) && !defined(__NR_select)
+
+# define __NR___libc_pselect6 __NR_pselect6
+_syscall6(int, __libc_pselect6, int, n, fd_set *, readfds, fd_set *, writefds,
+	fd_set *, exceptfds, const struct timespec *, timeout,
+	const sigset_t *, sigmask);
+
+int __libc_select(int n, fd_set *readfds, fd_set *writefds, fd_set *exceptfds,
+                  struct timeval *timeout)
+{
+	struct timespec _ts, *ts = 0;
+	if (timeout) {
+		_ts.tv_sec = timeout->tv_sec;
+		_ts.tv_nsec = timeout->tv_usec * 1000;
+		ts = &_ts;
+	}
+	return __libc_pselect6(n, readfds, writefds, exceptfds, ts, 0);
+}
+
+#else
+
 #ifdef __NR__newselect
 # define __NR___libc_select __NR__newselect
 #else
@@ -19,6 +40,9 @@
 #endif
 _syscall5(int, __libc_select, int, n, fd_set *, readfds, fd_set *, writefds,
 		  fd_set *, exceptfds, struct timeval *, timeout);
+
+#endif
+
 libc_hidden_proto(select)
 weak_alias(__libc_select,select)
 libc_hidden_weak(select)




More information about the uClibc-cvs mailing list