OSDN Git Service

* cygwin.din (ppoll): Export.
authorcorinna <corinna>
Mon, 18 Apr 2011 12:00:02 +0000 (12:00 +0000)
committercorinna <corinna>
Mon, 18 Apr 2011 12:00:02 +0000 (12:00 +0000)
* poll.cc (ppoll): Implement.
* posix.sgml (std-gnu): Add ppoll.
* include/cygwin/version.h: Bump API minor number.
* include/sys/poll.h (ppoll): Declare.

winsup/cygwin/ChangeLog
winsup/cygwin/cygwin.din
winsup/cygwin/include/cygwin/version.h
winsup/cygwin/include/sys/poll.h
winsup/cygwin/poll.cc
winsup/cygwin/posix.sgml

index 83d3320..1bb3d0f 100644 (file)
@@ -1,5 +1,13 @@
 2011-04-18  Corinna Vinschen  <corinna@vinschen.de>
 
+       * cygwin.din (ppoll): Export.
+       * poll.cc (ppoll): Implement.
+       * posix.sgml (std-gnu): Add ppoll.
+       * include/cygwin/version.h: Bump API minor number.
+       * include/sys/poll.h (ppoll): Declare.
+
+2011-04-18  Corinna Vinschen  <corinna@vinschen.de>
+
        * fhandler_socket.cc (fhandler_socket::evaluate_events): Handle the
        FD_CLOSE event specially when called from accept.  Explain why.
        (fhandler_socket::shutdown): Fake success on not-connected socket and
index d5edb20..823776d 100644 (file)
@@ -1160,6 +1160,7 @@ pow10 NOSIGFE
 pow10f NOSIGFE
 powf NOSIGFE
 _powf = powf NOSIGFE
+ppoll SIGFE
 pread SIGFE
 printf SIGFE
 program_invocation_name DATA
index 072f62d..95e5876 100644 (file)
@@ -404,12 +404,13 @@ details. */
       238: Export pthread_spin_destroy, pthread_spin_init, pthread_spin_lock,
           pthread_spin_trylock, pthread_spin_unlock.
       239: Export pthread_setschedprio.
+      240: Export ppoll.
      */
 
      /* Note that we forgot to bump the api for ualarm, strtoll, strtoull */
 
 #define CYGWIN_VERSION_API_MAJOR 0
-#define CYGWIN_VERSION_API_MINOR 239
+#define CYGWIN_VERSION_API_MINOR 240
 
      /* There is also a compatibity version number associated with the
        shared memory regions.  It is incremented when incompatible
index 7fd1c6e..a9d228b 100644 (file)
@@ -1,6 +1,6 @@
 /* sys/poll.h
 
-   Copyright 2000, 2001, 2006 Red Hat, Inc.
+   Copyright 2000, 2001, 2006, 2011 Red Hat, Inc.
 
    This file is part of Cygwin.
 
@@ -12,6 +12,7 @@
 #define _SYS_POLL_H
 
 #include <sys/cdefs.h>
+#include <sys/types.h>
 
 __BEGIN_DECLS
 
@@ -39,6 +40,9 @@ struct pollfd {
 typedef unsigned int nfds_t;
 
 extern int poll __P ((struct pollfd *fds, nfds_t nfds, int timeout));
+extern int ppoll __P ((struct pollfd *fds, nfds_t nfds,
+                      const struct timespec *timeout_ts,
+                      const sigset_t *sigmask));
 
 __END_DECLS
 
index 2e68f32..3c342ad 100644 (file)
@@ -21,6 +21,8 @@
 #include "fhandler.h"
 #include "dtable.h"
 #include "cygheap.h"
+#include "pinfo.h"
+#include "sigproc.h"
 
 extern "C" int
 poll (struct pollfd *fds, nfds_t nfds, int timeout)
@@ -124,3 +126,24 @@ poll (struct pollfd *fds, nfds_t nfds, int timeout)
 
   return ret;
 }
+
+extern "C" int
+ppoll (struct pollfd *fds, nfds_t nfds, const struct timespec *timeout_ts,
+       const sigset_t *sigmask)
+{
+  int timeout;
+  sigset_t oldset = _my_tls.sigmask;
+
+  myfault efault;
+  if (efault.faulted (EFAULT))
+    return -1;
+  timeout = (timeout_ts == NULL)
+           ? -1
+           : (timeout_ts->tv_sec * 1000 + timeout_ts->tv_nsec / 1000000);
+  if (sigmask)
+    set_signal_mask (*sigmask, _my_tls.sigmask);
+  int ret = poll (fds, nfds, timeout);
+  if (sigmask)
+    set_signal_mask (oldset, _my_tls.sigmask);
+  return ret;
+}
index d44f2bf..47cbcab 100644 (file)
@@ -1116,6 +1116,7 @@ also IEEE Std 1003.1-2008 (POSIX.1-2008).</para>
     pipe2
     pow10
     pow10f
+    ppoll
     removexattr
     setxattr
     strchrnul