diff options
-rw-r--r-- | configure.ac | 4 | ||||
-rw-r--r-- | gnuradio-core/src/lib/runtime/gr_local_sighandler.h | 3 | ||||
-rw-r--r-- | gnuradio-core/src/lib/runtime/gr_runtime.cc | 2 | ||||
-rw-r--r-- | gnuradio-core/src/lib/runtime/gr_runtime_impl.cc | 15 |
4 files changed, 16 insertions, 8 deletions
diff --git a/configure.ac b/configure.ac index bede237678..04d16205f0 100644 --- a/configure.ac +++ b/configure.ac @@ -74,7 +74,7 @@ AC_HEADER_STDC AC_HEADER_SYS_WAIT AC_CHECK_HEADERS(fcntl.h limits.h strings.h time.h sys/ioctl.h sys/time.h unistd.h) AC_CHECK_HEADERS(linux/ppdev.h sys/mman.h sys/select.h sys/types.h) -AC_CHECK_HEADERS(sys/resource.h stdint.h sched.h) +AC_CHECK_HEADERS(sys/resource.h stdint.h sched.h signal.h) dnl Checks for typedefs, structures, and compiler characteristics. AC_C_CONST @@ -90,7 +90,7 @@ AC_FUNC_SETVBUF_REVERSED AC_FUNC_VPRINTF AC_CHECK_FUNCS([mmap select socket strcspn strerror strspn getpagesize sysconf]) AC_CHECK_FUNCS([snprintf gettimeofday nanosleep sched_setscheduler]) -AC_CHECK_FUNCS([modf sqrt]) +AC_CHECK_FUNCS([modf sqrt sigaction sigprocmask]) AC_CHECK_LIB(m, sincos, [AC_DEFINE([HAVE_SINCOS],[1],[Define to 1 if your system has `sincos'.])]) AC_CHECK_LIB(m, sincosf,[AC_DEFINE([HAVE_SINCOSF],[1],[Define to 1 if your system has `sincosf'.])]) diff --git a/gnuradio-core/src/lib/runtime/gr_local_sighandler.h b/gnuradio-core/src/lib/runtime/gr_local_sighandler.h index 08e8edf00c..011b0853a2 100644 --- a/gnuradio-core/src/lib/runtime/gr_local_sighandler.h +++ b/gnuradio-core/src/lib/runtime/gr_local_sighandler.h @@ -23,7 +23,10 @@ #ifndef INCLUDED_GR_LOCAL_SIGHANDLER_H #define INCLUDED_GR_LOCAL_SIGHANDLER_H +#ifdef HAVE_SIGNAL_H #include <signal.h> +#endif + #include <string> /*! diff --git a/gnuradio-core/src/lib/runtime/gr_runtime.cc b/gnuradio-core/src/lib/runtime/gr_runtime.cc index 93f78fea85..aab8ea5ab1 100644 --- a/gnuradio-core/src/lib/runtime/gr_runtime.cc +++ b/gnuradio-core/src/lib/runtime/gr_runtime.cc @@ -49,7 +49,7 @@ gr_runtime::~gr_runtime() delete d_impl; } -// HACK: This prevents using more than one gr_runtime instance +// FIXME: This prevents using more than one gr_runtime instance static void runtime_sigint_handler(int signum) { diff --git a/gnuradio-core/src/lib/runtime/gr_runtime_impl.cc b/gnuradio-core/src/lib/runtime/gr_runtime_impl.cc index dcd904a01c..f8d65261e8 100644 --- a/gnuradio-core/src/lib/runtime/gr_runtime_impl.cc +++ b/gnuradio-core/src/lib/runtime/gr_runtime_impl.cc @@ -24,16 +24,20 @@ #include "config.h" #endif -#define GR_RUNTIME_IMPL_DEBUG 0 - #include <gr_runtime_impl.h> #include <gr_simple_flowgraph.h> #include <gr_hier_block2.h> #include <gr_hier_block2_detail.h> + +#ifdef HAVE_SIGNAL_H #include <signal.h> +#endif + #include <stdexcept> #include <iostream> +#define GR_RUNTIME_IMPL_DEBUG 0 + gr_runtime_impl::gr_runtime_impl(gr_hier_block2_sptr top_block) : d_running(false), d_top_block(top_block), @@ -116,12 +120,13 @@ gr_scheduler_thread::run_undetached(void *arg) // First code to run in new thread context // Mask off SIGINT in this thread to gaurantee mainline thread gets signal +#ifdef HAVE_SIGPROCMASK sigset_t old_set; sigset_t new_set; - sigfillset(&new_set); - sigdelset(&new_set, SIGINT); + sigemptyset(&new_set); + sigaddset(&new_set, SIGINT); sigprocmask(SIG_BLOCK, &new_set, &old_set); - +#endif // Run the single-threaded scheduler d_sts->run(); return 0; |