From 4e0814144276c93187de8303c20e4df8f4a29117 Mon Sep 17 00:00:00 2001 From: Keir Fraser Date: Tue, 18 Mar 2008 11:26:43 +0000 Subject: [PATCH] stubdom: Add support for select() call with NULL arguments. Signed-off-by: Samuel Thibault --- lib/sys.c | 32 ++++++++++++++++++++++++++------ 1 file changed, 26 insertions(+), 6 deletions(-) diff --git a/lib/sys.c b/lib/sys.c index 3e325b1..ffc8bf9 100644 --- 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) { -- 2.39.5