]> sourceware.org Git - newlib-cygwin.git/commitdiff
* cygwin.din (pselect): Export.
authorCorinna Vinschen <corinna@vinschen.de>
Tue, 19 Apr 2005 08:32:59 +0000 (08:32 +0000)
committerCorinna Vinschen <corinna@vinschen.de>
Tue, 19 Apr 2005 08:32:59 +0000 (08:32 +0000)
* select.cc (pselect): New function.
* include/cygwin/version.h: Bump API minor number.
* include/sys/select.h: Include signal.h.  Declare pselect.

winsup/cygwin/ChangeLog
winsup/cygwin/cygwin.din
winsup/cygwin/include/cygwin/version.h
winsup/cygwin/include/sys/select.h
winsup/cygwin/select.cc

index a1f575ab42627eeb08c6f065f6a2f564bb9ff661..c5b5e6907def5ab39f4a290f806a3f7cb85f6772 100644 (file)
@@ -1,3 +1,10 @@
+2005-04-19  Corinna Vinschen  <corinna@vinschen.de>
+
+       * cygwin.din (pselect): Export.
+       * select.cc (pselect): New function.
+       * include/cygwin/version.h: Bump API minor number.
+       * include/sys/select.h: Include signal.h.  Declare pselect.
+
 2005-04-18  Corinna Vinschen  <corinna@vinschen.de>
 
        * fhandler.h (enum conn_state): Add connect_failed state.
index a269d93bdd70ce3728912e582ccf1f8b1c21c2be..1bf663546f7958a43d571ad7e52ecc4bc116b805 100644 (file)
@@ -346,6 +346,7 @@ rexec = cygwin_rexec SIGFE
 rresvport = cygwin_rresvport SIGFE
 _select = cygwin_select SIGFE
 select = cygwin_select SIGFE
+pselect SIGFE
 send = cygwin_send SIGFE
 sendmsg = cygwin_sendmsg SIGFE
 sendto = cygwin_sendto SIGFE
index f75f09cdfda868781c53fdcd0e792cffdba961bf..ddb0de0ca379416f024d89a0a7b43d54add0cd30 100644 (file)
@@ -254,12 +254,13 @@ details. */
       125: LD_PRELOAD/CW_HOOK available.
       126: Export lsearch, lfind, timer_gettime.
       127: Export sigrelese.
+      128: Export pselect.
      */
 
      /* Note that we forgot to bump the api for ualarm, strtoll, strtoull */
 
 #define CYGWIN_VERSION_API_MAJOR 0
-#define CYGWIN_VERSION_API_MINOR 127
+#define CYGWIN_VERSION_API_MINOR 128
 
      /* There is also a compatibity version number associated with the
        shared memory regions.  It is incremented when incompatible
index 666a151ebe6635f2477930ad579c30a10e4a6b77..b0f328327469a128ef19caef1e0a51a9157205d0 100644 (file)
@@ -23,10 +23,16 @@ details. */
 #include <sys/time.h>
 #include <time.h>
 
+/* Get definition of sigset_t. */
+#include <signal.h>
+
 __BEGIN_DECLS
 
 int select __P ((int __n, fd_set *__readfds, fd_set *__writefds,
                 fd_set *__exceptfds, struct timeval *__timeout));
+int pselect __P ((int __n, fd_set *__readfds, fd_set *__writefds,
+                 fd_set *__exceptfds, const struct timespec *__timeout,
+                 const sigset_t *__set));
 
 __END_DECLS
 
index 2daa88a5f6b08add62f1a175e77f175ab95844f6..4abc249856919b5796582e9739e0778ad1cdb843 100644 (file)
@@ -36,6 +36,7 @@ details. */
 #include "fhandler.h"
 #include "dtable.h"
 #include "cygheap.h"
+#include "pinfo.h"
 #include "sigproc.h"
 #include "tty.h"
 #include "ntdll.h"
@@ -158,6 +159,33 @@ cygwin_select (int maxfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds,
   return timeout ? 0 : sel.poll (readfds, writefds, exceptfds);
 }
 
+extern "C" int
+pselect(int maxfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds,
+       const struct timespec *ts, const sigset_t *set)
+{
+  struct timeval tv;
+  sigset_t oldset = myself->getsigmask ();
+
+  if (ts)
+    {
+      if (check_invalid_read_struct_errno (ts))
+       return -1;
+      tv.tv_sec = ts->tv_sec;
+      tv.tv_usec = ts->tv_nsec / 1000;
+    }
+  if (set)
+    {
+      if (check_invalid_read_struct_errno (set))
+       return -1;
+      set_signal_mask (*set);
+    }
+  int ret = cygwin_select (maxfds, readfds, writefds, exceptfds,
+                          ts ? &tv : NULL);
+  if (set)
+    set_signal_mask (oldset);
+  return ret;
+}
+
 /* Call cleanup functions for all inspected fds.  Gets rid of any
    executing threads. */
 void
This page took 0.039287 seconds and 5 git commands to generate.