about summary refs log tree commit homepage
diff options
context:
space:
mode:
authorEric Wong <normalperson@yhbt.net>2011-03-10 02:12:46 +0000
committerEric Wong <normalperson@yhbt.net>2011-03-10 02:12:46 +0000
commiteb12922fdc860ce780617a3b8302cad7c6ff9666 (patch)
tree3e8798a2eed91138190f217ac1ab39179633d807
parenteab2b76b68b68e964a9b43b50fc8ea387f719f56 (diff)
downloadsleepy_penguin-eb12922fdc860ce780617a3b8302cad7c6ff9666.tar.gz
I know of no other way to support them in Ruby
-rw-r--r--ext/sleepy_penguin/signalfd.c13
-rw-r--r--test/test_signalfd.rb5
2 files changed, 18 insertions, 0 deletions
diff --git a/ext/sleepy_penguin/signalfd.c b/ext/sleepy_penguin/signalfd.c
index 90d2a71..2752262 100644
--- a/ext/sleepy_penguin/signalfd.c
+++ b/ext/sleepy_penguin/signalfd.c
@@ -1,5 +1,6 @@
 #ifdef HAVE_SYS_SIGNALFD_H
 #include "sleepy_penguin.h"
+#include <signal.h>
 #include <sys/signalfd.h>
 static ID id_for_fd, id_list;
 static VALUE ssi_members;
@@ -294,6 +295,18 @@ void sleepy_penguin_init_signalfd(void)
 
         NODOC_CONST(cSigInfo, "MEMBERS", ssi_members);
 
+        /*
+         * the minimum signal number for real-time signals,
+         * 34 on NPTL-based systems
+         */
+        rb_define_const(cSignalFD, "RTMIN", INT2NUM(SIGRTMIN));
+
+        /*
+         * the maximum signal number for real-time signals,
+         * 64 on NPTL-based systems
+         */
+        rb_define_const(cSignalFD, "RTMAX", INT2NUM(SIGRTMAX));
+
 #define SSI_READER(FIELD) do { \
           rb_define_method(cSigInfo, #FIELD, ssi_##FIELD, 0); \
           rb_ary_push(ssi_members, ID2SYM(rb_intern(#FIELD))); \
diff --git a/test/test_signalfd.rb b/test/test_signalfd.rb
index a135834..0330e70 100644
--- a/test/test_signalfd.rb
+++ b/test/test_signalfd.rb
@@ -22,6 +22,11 @@ class TestSignalFD < Test::Unit::TestCase
     trap(:USR2, "DEFAULT")
   end
 
+  def test_rt_constants
+    assert [33,34].include?(SignalFD::RTMIN)
+    assert_equal 64, SignalFD::RTMAX
+  end
+
   def test_new_with_flags
     @sfd = SignalFD.new(%w(USR1), [:CLOEXEC,:NONBLOCK])
     assert_instance_of SignalFD, @sfd