tevent: define TEVENT_NUM_SIGNALS based on configure checks
authorStefan Metzmacher <metze@samba.org>
Fri, 22 Feb 2013 13:26:16 +0000 (14:26 +0100)
committerStefan Metzmacher <metze@samba.org>
Fri, 1 Mar 2013 09:07:48 +0000 (10:07 +0100)
Signed-off-by: Stefan Metzmacher <metze@samba.org>
lib/tevent/libtevent.m4
lib/tevent/tevent_signal.c
lib/tevent/wscript

index 5c5969b0df593b608add5b2e3dcf4cf9d6925386..4d4fd2bd77ae660142cbf500d6668c0709c686b9 100644 (file)
@@ -39,6 +39,35 @@ if test x"$ac_cv_header_sys_epoll_h" = x"yes" -a x"$ac_cv_func_epoll_create" = x
    AC_DEFINE(HAVE_EPOLL, 1, [Whether epoll available])
 fi
 
+tevent_num_signals_includes="$ac_includes_default
+#include <signal.h>
+"
+tevent_num_signals=64
+AC_CHECK_VALUEOF(NSIG, [$tevent_num_signals_includes])
+v=$ac_cv_valueof_NSIG
+test -n "$v" && test "$v" -gt "$tevent_num_signals" && {
+       tevent_num_signals=$v
+}
+AC_CHECK_VALUEOF(_NSIG, [$tevent_num_signals_includes])
+v=$ac_cv_valueof__NSIG
+test -n "$v" && test "$v" -gt "$tevent_num_signals" && {
+       tevent_num_signals=$v
+}
+AC_CHECK_VALUEOF(SIGRTMAX, [$tevent_num_signals_includes])
+v=$ac_cv_valueof_SIGRTMAX
+test -n "$v" && test "$v" -gt "$tevent_num_signals" && {
+       tevent_num_signals=$v
+}
+AC_CHECK_VALUEOF(SIGRTMIN, [$tevent_num_signals_includes])
+v=$ac_cv_valueof_SIGRTMIN
+test -n "$v" && {
+       v=`expr $v + $v`
+}
+test -n "$v" && test "$v" -gt "$tevent_num_signals" && {
+       tevent_num_signals=$v
+}
+AC_DEFINE_UNQUOTED(TEVENT_NUM_SIGNALS, $tevent_num_signals, [Max signal number value])
+
 if test x"$VERSIONSCRIPT" != "x"; then
     EXPORTSFILE=tevent.exports
     AC_SUBST(EXPORTSFILE)
index 9582f6e7acdcb566b80c9f396335c64fb1598ac7..b5a56ef03aa5ffe87e22c7b46d91b3d328e3ce73 100644 (file)
@@ -30,8 +30,6 @@
 #include "tevent_internal.h"
 #include "tevent_util.h"
 
-#define TEVENT_NUM_SIGNALS 64
-
 /* maximum number of SA_SIGINFO signals to hold in the queue.
   NB. This *MUST* be a power of 2, in order for the ring buffer
   wrap to work correctly. Thanks to Petr Vandrovec <petr@vandrovec.name>
index 684286d8c4ee7c80f69a64357be42cabc7b9df0c..c62c3de31735625ec4e34fd25ff63081553a4de2 100755 (executable)
@@ -44,6 +44,23 @@ def configure(conf):
     if conf.CHECK_FUNCS('epoll_create', headers='sys/epoll.h'):
         conf.DEFINE('HAVE_EPOLL', 1)
 
+    tevent_num_signals = 64
+    v = conf.CHECK_VALUEOF('NSIG', headers='signal.h')
+    if v is not None:
+        tevent_num_signals = max(tevent_num_signals, v)
+    v = conf.CHECK_VALUEOF('_NSIG', headers='signal.h')
+    if v is not None:
+        tevent_num_signals = max(tevent_num_signals, v)
+    v = conf.CHECK_VALUEOF('SIGRTMAX', headers='signal.h')
+    if v is not None:
+        tevent_num_signals = max(tevent_num_signals, v)
+    v = conf.CHECK_VALUEOF('SIGRTMIN', headers='signal.h')
+    if v is not None:
+        tevent_num_signals = max(tevent_num_signals, v*2)
+
+    if not conf.CONFIG_SET('USING_SYSTEM_TEVENT'):
+        conf.DEFINE('TEVENT_NUM_SIGNALS', tevent_num_signals)
+
     conf.env.disable_python = getattr(Options.options, 'disable_python', False)
 
     if not conf.env.disable_python: