diff options
author | normalperson@yhbt.net <normalperson@yhbt.net> | 2013-04-23 22:53:36 +0000 |
---|---|---|
committer | Eric Wong <normalperson@yhbt.net> | 2013-04-29 21:01:01 +0000 |
commit | 07871a12535da6cd58abf58f8a3f8dca3dffbb6e (patch) | |
tree | 6cf48f610431561bd255c5ba77e5ec6f6a686e70 /ext/sleepy_penguin | |
parent | 7181b7e4da11894b59caebc1c864deca06a780b2 (diff) | |
download | sleepy_penguin-07871a12535da6cd58abf58f8a3f8dca3dffbb6e.tar.gz |
We will support kqueue on FreeBSD-based systems.
Diffstat (limited to 'ext/sleepy_penguin')
-rw-r--r-- | ext/sleepy_penguin/epoll.c | 5 | ||||
-rw-r--r-- | ext/sleepy_penguin/extconf.rb | 2 | ||||
-rw-r--r-- | ext/sleepy_penguin/init.c | 4 |
3 files changed, 10 insertions, 1 deletions
diff --git a/ext/sleepy_penguin/epoll.c b/ext/sleepy_penguin/epoll.c index a6f86f8..d080ea5 100644 --- a/ext/sleepy_penguin/epoll.c +++ b/ext/sleepy_penguin/epoll.c @@ -1,4 +1,5 @@ #include "sleepy_penguin.h" +#ifdef HAVE_SYS_EPOLL_H #include <sys/epoll.h> #include <unistd.h> #include <time.h> @@ -348,4 +349,8 @@ void sleepy_penguin_init_epoll(void) if (RB_SP_GREEN_THREAD) rb_require("sleepy_penguin/epoll/io"); + + /* the high-level interface is implemented in Ruby: */ + rb_require("sleepy_penguin/epoll"); } +#endif /* HAVE_SYS_EPOLL_H */ diff --git a/ext/sleepy_penguin/extconf.rb b/ext/sleepy_penguin/extconf.rb index bd12570..12e1892 100644 --- a/ext/sleepy_penguin/extconf.rb +++ b/ext/sleepy_penguin/extconf.rb @@ -1,5 +1,5 @@ require 'mkmf' -have_header('sys/epoll.h') or abort 'sys/epoll.h not found' +have_header('sys/epoll.h') have_header('sys/eventfd.h') # it's impossible to use signalfd reliably with Ruby since Ruby currently diff --git a/ext/sleepy_penguin/init.c b/ext/sleepy_penguin/init.c index eb332bf..3195181 100644 --- a/ext/sleepy_penguin/init.c +++ b/ext/sleepy_penguin/init.c @@ -4,7 +4,11 @@ #define L1_CACHE_LINE_MAX 128 /* largest I've seen (Pentium 4) */ size_t rb_sp_l1_cache_line_size; +#ifdef HAVE_SYS_EPOLL_H void sleepy_penguin_init_epoll(void); +#else +# define sleepy_penguin_init_epoll() for(;0;) +#endif #ifdef HAVE_SYS_TIMERFD_H void sleepy_penguin_init_timerfd(void); |