]> sourceware.org Git - newlib-cygwin.git/commitdiff
* select.cc (cygwin_select): Add common introducer and leaver debug output.
authorChristopher Faylor <me@cgf.cx>
Wed, 7 Dec 2011 23:14:47 +0000 (23:14 +0000)
committerChristopher Faylor <me@cgf.cx>
Wed, 7 Dec 2011 23:14:47 +0000 (23:14 +0000)
(select_stuff::poll): Remove unneeded debugging.

winsup/cygwin/ChangeLog
winsup/cygwin/select.cc

index d91dd4b6dc2c2e21e3f24af7ab77c7df0756de73..beb1fd7b478d821b905a131588562838abb54420 100644 (file)
@@ -1,3 +1,9 @@
+2011-12-07  Christopher Faylor  <me.cygwin2011@cgf.cx>
+
+       * select.cc (cygwin_select): Add common introducer and leaver debug
+       output.
+       (select_stuff::poll): Remove unneeded debugging.
+
 2011-12-07  Christopher Faylor  <me.cygwin2011@cgf.cx>
 
        * exceptions.cc (ctrl_c_handler): Remove _my_tls.remove since it can
index b8135954ee62d4ad2a8353dc9f724ed7d87a061c..c60cd225fb318bf41f83eee1c7c13de43276b629 100644 (file)
@@ -94,7 +94,7 @@ cygwin_select (int maxfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds,
   fd_set *dummy_writefds = allocfd_set (maxfds);
   fd_set *dummy_exceptfds = allocfd_set (maxfds);
 
-  select_printf ("%d, %p, %p, %p, %p", maxfds, readfds, writefds, exceptfds, to);
+  select_printf ("select(%d, %p, %p, %p, %p)", maxfds, readfds, writefds, exceptfds, to);
 
   pthread_testcancel ();
 
@@ -130,6 +130,7 @@ cygwin_select (int maxfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds,
   fd_set *w = allocfd_set (maxfds);
   fd_set *e = allocfd_set (maxfds);
 
+  int res = 1;
   /* Degenerate case.  No fds to wait for.  Just wait. */
   if (sel.start.next == NULL)
     {
@@ -146,17 +147,25 @@ cygwin_select (int maxfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds,
        default:
          break;
        }
-      timeout = 1;
+      res = 0;
     }
   else if (sel.always_ready || ms == 0)
-    /* Don't bother waiting. */;
+    res = 0;
   else if ((timeout = sel.wait (r, w, e, ms) < 0))
-    return -1; /* some kind of error */
+    res = -1;  /* some kind of error */
 
-  copyfd_set (readfds, r, maxfds);
-  copyfd_set (writefds, w, maxfds);
-  copyfd_set (exceptfds, e, maxfds);
-  return timeout ? 0 : sel.poll (readfds, writefds, exceptfds);
+  if (res >= 0)
+    {
+      copyfd_set (readfds, r, maxfds);
+      copyfd_set (writefds, w, maxfds);
+      copyfd_set (exceptfds, e, maxfds);
+      if (res > 0)
+       res = sel.poll (readfds, writefds, exceptfds);
+    }
+
+  syscall_printf ("%R = select (%d, %p, %p, %p, %p)", res, maxfds, readfds,
+                 writefds, exceptfds, to);
+  return res;
 }
 
 extern "C" int
@@ -445,7 +454,6 @@ select_stuff::poll (fd_set *readfds, fd_set *writefds, fd_set *exceptfds)
   while ((s = s->next))
     n += (!s->peek || s->peek (s, true)) ?
         set_bits (s, readfds, writefds, exceptfds) : 0;
-  select_printf ("returning %d", n);
   return n;
 }
 
This page took 0.036735 seconds and 5 git commands to generate.