OSDN Git Service

fix ppoll. we forgot to pass 5th parameter to the syscall
authorDenis Vlasenko <vda.linux@googlemail.com>
Wed, 28 Jan 2009 23:42:01 +0000 (23:42 -0000)
committerDenis Vlasenko <vda.linux@googlemail.com>
Wed, 28 Jan 2009 23:42:01 +0000 (23:42 -0000)
libc/sysdeps/linux/common/ppoll.c

index edcb1dc..d550ae8 100644 (file)
@@ -17,6 +17,7 @@
    Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
    02111-1307 USA.  */
 
+#include <signal.h>
 #include <sys/syscall.h>
 #include <sys/poll.h>
 
 
 # define __NR___libc_ppoll __NR_ppoll
 static __always_inline
-_syscall4(int, __libc_ppoll, struct pollfd *, fds,
-       nfds_t, nfds, const struct timespec *, timeout,
-       const __sigset_t *, sigmask)
+_syscall5(int, __libc_ppoll,
+       struct pollfd *, fds,
+       nfds_t, nfds,
+       const struct timespec *, timeout,
+       const __sigset_t *, sigmask,
+       size_t, sigsetsize)
 
 int
-ppoll (struct pollfd *fds, nfds_t nfds, const struct timespec *timeout,
+ppoll(struct pollfd *fds, nfds_t nfds, const struct timespec *timeout,
        const __sigset_t *sigmask)
 {
-  /* The Linux kernel can in some situations update the timeout value.
-     We do not want that so use a local variable.  */
-  struct timespec tval;
-  if (timeout != NULL)
-    {
-      tval = *timeout;
-      timeout = &tval;
-    }
-
-  return __libc_ppoll(fds, nfds, timeout, sigmask);
+       /* The Linux kernel can in some situations update the timeout value.
+          We do not want that so use a local variable.  */
+       struct timespec tval;
+       if (timeout != NULL) {
+               tval = *timeout;
+               timeout = &tval;
+       }
+
+       return __libc_ppoll(fds, nfds, timeout, sigmask, _NSIG / 8);
 }
 libc_hidden_def(ppoll)