summaryrefslogtreecommitdiff
path: root/eval.c
diff options
context:
space:
mode:
authorakr <akr@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2005-07-02 06:22:14 +0000
committerakr <akr@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2005-07-02 06:22:14 +0000
commit12bed479ec5777392077ac70c0996bbc44bd5a20 (patch)
treec054ce4ed6a885523dec5cde417b1235f1d246c0 /eval.c
parent10d3f6a039fb05c309243f8937c36bd3b5a6f724 (diff)
* configure.in: check select_large_fdset.
* eval.c: use select_large_fdset to support large file descriptors on Solaris. [ruby-dev:26404] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@8695 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'eval.c')
-rw-r--r--eval.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/eval.c b/eval.c
index 442b57bdb2..4b946c0e6b 100644
--- a/eval.c
+++ b/eval.c
@@ -179,6 +179,16 @@ typedef jmp_buf rb_jmpbuf_t;
#include <sys/select.h>
#endif
+/*
+ Solaris sys/select.h switches select to select_large_fdset to support larger
+ file descriptors if FD_SETSIZE is larger than 1024 on 32bit environment.
+ But Ruby doesn't change FD_SETSIZE because fd_set is allocated dynamically.
+ So following definition is required to use select_large_fdset.
+*/
+#ifdef HAVE_SELECT_LARGE_FDSET
+#define select(n, r, w, e, t) select_large_fdset(n, r, w, e, t)
+#endif
+
#ifdef HAVE_SYS_PARAM_H
#include <sys/param.h>
#endif