summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--config/Makefile.am1
-rw-r--r--config/gr_vmcircbuf.m437
-rw-r--r--configure.ac1
-rw-r--r--gnuradio-core/src/lib/runtime/gr_vmcircbuf.cc2
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;