From: jcorgan Date: Mon, 18 Dec 2006 05:39:40 +0000 (+0000) Subject: Cleanup on hierarchical flowgraph code. X-Git-Url: https://git.gag.com/?a=commitdiff_plain;h=424a1b454020727163cbbb0b19e8ea2f0833ef85;p=debian%2Fgnuradio Cleanup on hierarchical flowgraph code. git-svn-id: http://gnuradio.org/svn/gnuradio/trunk@4133 221aa14e-8319-0410-a670-987f0aec2ac5 --- diff --git a/configure.ac b/configure.ac index bede2376..04d16205 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 08e8edf0..011b0853 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 +#endif + #include /*! diff --git a/gnuradio-core/src/lib/runtime/gr_runtime.cc b/gnuradio-core/src/lib/runtime/gr_runtime.cc index 93f78fea..aab8ea5a 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 dcd904a0..f8d65261 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 #include #include #include + +#ifdef HAVE_SIGNAL_H #include +#endif + #include #include +#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;