diff options
author | Keir Fraser <keir.fraser@citrix.com> | 2008-03-18 11:26:43 +0000 |
---|---|---|
committer | Keir Fraser <keir.fraser@citrix.com> | 2008-03-18 11:26:43 +0000 |
commit | b1c30105ce1e648b15bbb3b95bdcd152e8b5d1c0 (patch) | |
tree | c69dd0cbdf1595e471ffc34c32da260d7026f5ff /extras/mini-os/lib | |
parent | 1add612bf58d6c49a4fe8d93190dea514d6dc7d8 (diff) | |
download | xen-b1c30105ce1e648b15bbb3b95bdcd152e8b5d1c0.tar.gz xen-b1c30105ce1e648b15bbb3b95bdcd152e8b5d1c0.tar.bz2 xen-b1c30105ce1e648b15bbb3b95bdcd152e8b5d1c0.zip |
stubdom: Add support for select() call with NULL arguments.
Signed-off-by: Samuel Thibault <samuel.thibault@eu.citrix.com>
Diffstat (limited to 'extras/mini-os/lib')
-rw-r--r-- | extras/mini-os/lib/sys.c | 32 |
1 files changed, 26 insertions, 6 deletions
diff --git a/extras/mini-os/lib/sys.c b/extras/mini-os/lib/sys.c index 3e325b10a1..ffc8bf9ff3 100644 --- a/extras/mini-os/lib/sys.c +++ b/extras/mini-os/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) { |