]> xenbits.xensource.com Git - people/liuw/libxenctrl-split/mini-os.git/commitdiff
stubdom: Add support for select() call with NULL arguments.
authorKeir Fraser <keir.fraser@citrix.com>
Tue, 18 Mar 2008 11:26:43 +0000 (11:26 +0000)
committerKeir Fraser <keir.fraser@citrix.com>
Tue, 18 Mar 2008 11:26:43 +0000 (11:26 +0000)
Signed-off-by: Samuel Thibault <samuel.thibault@eu.citrix.com>
lib/sys.c

index 3e325b10a1a412ae838768951e5998dcf3983e49..ffc8bf9ff31c7514bf250b2ec3caff5d5a4a890d 100644 (file)
--- a/lib/sys.c
+++ b/lib/sys.c
@@ -837,9 +837,19 @@ int select(int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds,
     add_waiter(w4, xenbus_watch_queue);
     add_waiter(w5, kbdfront_queue);
 
-    myread = *readfds;
-    mywrite = *writefds;
-    myexcept = *exceptfds;
+    if (readfds)
+        myread = *readfds;
+    else
+        FD_ZERO(&myread);
+    if (writefds)
+        mywrite = *writefds;
+    else
+        FD_ZERO(&mywrite);
+    if (exceptfds)
+        myexcept = *exceptfds;
+    else
+        FD_ZERO(&myexcept);
+
     DEBUG("polling ");
     dump_set(nfds, &myread, &mywrite, &myexcept, timeout);
     DEBUG("\n");
@@ -878,9 +888,19 @@ int select(int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds,
        thread->wakeup_time = stop;
     schedule();
 
-    myread = *readfds;
-    mywrite = *writefds;
-    myexcept = *exceptfds;
+    if (readfds)
+        myread = *readfds;
+    else
+        FD_ZERO(&myread);
+    if (writefds)
+        mywrite = *writefds;
+    else
+        FD_ZERO(&mywrite);
+    if (exceptfds)
+        myexcept = *exceptfds;
+    else
+        FD_ZERO(&myexcept);
+
     n = select_poll(nfds, &myread, &mywrite, &myexcept);
 
     if (n) {