diff options
-rw-r--r-- | config/Makefile.am | 1 | ||||
-rw-r--r-- | config/gr_vmcircbuf.m4 | 37 | ||||
-rw-r--r-- | configure.ac | 1 | ||||
-rw-r--r-- | gnuradio-core/src/lib/runtime/gr_vmcircbuf.cc | 2 |
4 files changed, 41 insertions, 0 deletions
diff --git a/config/Makefile.am b/config/Makefile.am index 535844507..ba3026cd9 100644 --- a/config/Makefile.am +++ b/config/Makefile.am @@ -89,6 +89,7 @@ m4macros = \ gr_swig.m4 \ gr_sysv_shm.m4 \ gr_version.m4 \ + gr_vmcircbuf.m4 \ lf_cc.m4 \ lf_cxx.m4 \ lf_warnings.m4 \ diff --git a/config/gr_vmcircbuf.m4 b/config/gr_vmcircbuf.m4 new file mode 100644 index 000000000..cf9e394e7 --- /dev/null +++ b/config/gr_vmcircbuf.m4 @@ -0,0 +1,37 @@ +dnl +dnl Copyright 2011 Free Software Foundation, Inc. +dnl +dnl This file is part of GNU Radio +dnl +dnl GNU Radio is free software; you can redistribute it and/or modify +dnl it under the terms of the GNU General Public License as published by +dnl the Free Software Foundation; either version 3, or (at your option) +dnl any later version. +dnl +dnl GNU Radio is distributed in the hope that it will be useful, +dnl but WITHOUT ANY WARRANTY; without even the implied warranty of +dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +dnl GNU General Public License for more details. +dnl +dnl You should have received a copy of the GNU General Public License +dnl along with GNU Radio; see the file COPYING. If not, write to +dnl the Free Software Foundation, Inc., 51 Franklin Street, +dnl Boston, MA 02110-1301, USA. +dnl + +AC_DEFUN([GR_VMCIRCBUF],[ + dnl Control availability of vmcircbuf methods. + dnl For now, only allows disabling of shm methods, which cause uncatchable + dnl segmentation faults on Cygwin with gcc 4.x (x <= 5) + + AC_MSG_CHECKING([whether to try shm vmcircbuf methods]) + AC_ARG_WITH(shm-vmcircbuf, + [AS_HELP_STRING([--without-shm-vmcircbuf], + [do not attempt to use shm vmcircbuf methods])], + [], [ with_shm_vmcircbuf=yes ]) + AC_MSG_RESULT($with_shm_vmcircbuf) + + AS_IF([test "x$with_shm_vmcircbuf" != xno], + [AC_DEFINE([TRY_SHM_VMCIRCBUF], [1], + [Define if ok to try shm vmcircbuf methods]) ]) +]) diff --git a/configure.ac b/configure.ac index 73ebbd6af..88589da87 100644 --- a/configure.ac +++ b/configure.ac @@ -237,6 +237,7 @@ inline static double exp10(double x) #endif ]) +GR_VMCIRCBUF GR_CHECK_SHM_OPEN GR_LIBGNURADIO_CORE_EXTRA_LDFLAGS GR_CHECK_CREATEFILEMAPPING diff --git a/gnuradio-core/src/lib/runtime/gr_vmcircbuf.cc b/gnuradio-core/src/lib/runtime/gr_vmcircbuf.cc index abcf5b2a6..3b8a6e617 100644 --- a/gnuradio-core/src/lib/runtime/gr_vmcircbuf.cc +++ b/gnuradio-core/src/lib/runtime/gr_vmcircbuf.cc @@ -100,8 +100,10 @@ gr_vmcircbuf_sysconfig::all_factories () std::vector<gr_vmcircbuf_factory *> result; result.push_back (gr_vmcircbuf_createfilemapping_factory::singleton ()); +#ifdef TRY_SHM_VMCIRCBUF result.push_back (gr_vmcircbuf_sysv_shm_factory::singleton ()); result.push_back (gr_vmcircbuf_mmap_shm_open_factory::singleton ()); +#endif result.push_back (gr_vmcircbuf_mmap_tmpfile_factory::singleton ()); return result; |