From 2802f92b86562b69a933e5deac8a03b9d2628ae3 Mon Sep 17 00:00:00 2001 From: zolliker Date: Thu, 16 Oct 2008 13:55:18 +0000 Subject: [PATCH] - changed select calls to newly introduced uselect --- uselect.c | 30 ++++++++++++++++++++++++++++++ uselect.h | 7 +++++++ 2 files changed, 37 insertions(+) create mode 100644 uselect.c create mode 100644 uselect.h diff --git a/uselect.c b/uselect.c new file mode 100644 index 00000000..7e0e2935 --- /dev/null +++ b/uselect.c @@ -0,0 +1,30 @@ +#include +#include +#include "uselect.h" + +/* for logging */ +#include "sics.h" +#include "commandlog.h" + +/* an uninterruptable version of select. M.Z. Oct 2008 */ + +static int cnt; + +int uselect(int nfds, + fd_set *readfds, fd_set *writefds, fd_set *exceptfds, + struct timeval *timeout) { + + sigset_t sigmask; + struct timespec tmo; + int result; + char buffer[80]; + + sigfillset(&sigmask); + tmo.tv_sec = timeout->tv_sec; + tmo.tv_nsec = timeout->tv_usec * 1000; + result = pselect(nfds, readfds, writefds, exceptfds, &tmo, &sigmask); + if (result < 0 && errno == EINTR) { + WriteToCommandLog("SYS>","pselect was interrupted!"); + } + return result; +} diff --git a/uselect.h b/uselect.h new file mode 100644 index 00000000..4d848d92 --- /dev/null +++ b/uselect.h @@ -0,0 +1,7 @@ +#include + +/* an uninterruptable version of select. M.Z. Oct 2008 */ + +int uselect(int nfds, + fd_set *readfds, fd_set *writefds, fd_set *exceptfds, + struct timeval *timeout);