Allow "INLINEABLE" as a synonym
[ghc-hetmet.git] / rts / posix / Select.c
index 32dca96..932fc79 100644 (file)
@@ -6,19 +6,20 @@
  *
  * ---------------------------------------------------------------------------*/
 
-/* we're outside the realms of POSIX here... */
-/* #include "PosixSource.h" */
-
+#include "PosixSource.h"
 #include "Rts.h"
-#include "Storage.h"
+
+#include "Signals.h"
 #include "Schedule.h"
 #include "RtsUtils.h"
-#include "RtsFlags.h"
-#include "Timer.h"
 #include "Itimer.h"
-#include "Signals.h"
 #include "Capability.h"
-#include "posix/Select.h"
+#include "Select.h"
+#include "AwaitEvent.h"
+
+# ifdef HAVE_SYS_SELECT_H
+#  include <sys/select.h>
+# endif
 
 # ifdef HAVE_SYS_TYPES_H
 #  include <sys/types.h>
@@ -155,7 +156,7 @@ awaitEvent(rtsBool wait)
        case BlockedOnRead:
          { 
            int fd = tso->block_info.fd;
-           if (fd >= (int)FD_SETSIZE) {
+           if ((fd >= (int)FD_SETSIZE) || (fd < 0)) {
                barf("awaitEvent: descriptor out of range");
            }
            maxfd = (fd > maxfd) ? fd : maxfd;
@@ -166,7 +167,7 @@ awaitEvent(rtsBool wait)
        case BlockedOnWrite:
          { 
            int fd = tso->block_info.fd;
-           if (fd >= (int)FD_SETSIZE) {
+           if ((fd >= (int)FD_SETSIZE) || (fd < 0)) {
                barf("awaitEvent: descriptor out of range");
            }
            maxfd = (fd > maxfd) ? fd : maxfd;