numa support: allow disabling numa support
authorMathieu Desnoyers <mathieu.desnoyers@efficios.com>
Sun, 5 Nov 2017 14:01:04 +0000 (09:01 -0500)
committerMathieu Desnoyers <mathieu.desnoyers@efficios.com>
Sun, 5 Nov 2017 14:01:04 +0000 (09:01 -0500)
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
configure.ac
libringbuffer/Makefile.am
libringbuffer/shm.c

index 727e58f3d5538069df16bb2c702ca7969472615c..8a5b664648397aa1ed1227c794a8b6d787c62cec 100644 (file)
@@ -247,8 +247,21 @@ AC_CHECK_LIB([urcu-bp], [synchronize_rcu_bp], [], [AC_MSG_ERROR([Cannot find lib
 # urcu - check that URCU lib is at least version 0.6
 AC_CHECK_LIB([urcu-bp], [call_rcu_bp], [], [AC_MSG_ERROR([liburcu 0.6 or newer is needed, please update your version or use [LDFLAGS]=-Ldir to specify the right location.])])
 
-# numa - check that numa lib is available
-AC_CHECK_LIB([numa], [numa_available], [], [AC_MSG_ERROR([libnuma is required, please install it (e.g. libnuma-dev) or use [LDFLAGS]=-Ldir to specify the right location.])])
+# numa.h integration
+AC_ARG_ENABLE([numa], [
+AS_HELP_STRING([--disable-numa], [disable NUMA support])
+], [
+       enable_numa=$enableval
+], [
+       enable_numa=yes
+])
+
+AS_IF([test "x$enable_numa" = "xyes"], [
+       # numa - check that numa lib is available
+       AC_CHECK_LIB([numa], [numa_available], [], [AC_MSG_ERROR([libnuma is required, please install it (e.g. libnuma-dev) or use [LDFLAGS]=-Ldir to specify the right location.])])
+       have_libnuma=yes
+])
+AM_CONDITIONAL([HAVE_LIBNUMA], [test "x$have_libnuma" = "xyes"])
 
 # optional linux/perf_event.h
 AC_CHECK_HEADERS([linux/perf_event.h], [have_perf_event=yes], [])
@@ -570,6 +583,9 @@ PPRINT_PROP_BOOL_CUSTOM([JNI interface (JNI)], $value, [use --enable-jni-interfa
 test "x$python_agent" = xyes && value=1 || value=0
 PPRINT_PROP_BOOL_CUSTOM([Python agent], $value, [use --enable-python-agent])
 
+test "x$enable_numa" = xyes && value=1 || value=0
+PPRINT_PROP_BOOL([NUMA], $value)
+
 AS_ECHO
 PPRINT_SET_INDENT(0)
 
index 34ad690753e65df98e55502d9a6623de8aadff8b..c153ea250415a7ac7a62e004a5c72362942c2b19 100644 (file)
@@ -15,7 +15,10 @@ libringbuffer_la_SOURCES = \
 
 libringbuffer_la_LIBADD = \
        -lpthread \
-       -lrt \
-       -lnuma
+       -lrt
+
+if HAVE_LIBNUMA
+libringbuffer_la_LIBADD += -lnuma
+endif
 
 libringbuffer_la_CFLAGS = -DUST_COMPONENT="libringbuffer" $(AM_CFLAGS)
index 135a2007b0e780221a0aa3cddeffe528a6e54733..0153578c93a2cfddf3bdd69ae57324b516086651 100644 (file)
@@ -19,6 +19,7 @@
  */
 
 #define _LGPL_SOURCE
+#include <config.h>
 #include "shm.h"
 #include <unistd.h>
 #include <fcntl.h>
@@ -32,7 +33,9 @@
 #include <dirent.h>
 #include <lttng/align.h>
 #include <limits.h>
+#ifdef HAVE_LIBNUMA
 #include <numa.h>
+#endif
 #include <helper.h>
 #include <ust-fd.h>
 
@@ -247,8 +250,9 @@ struct shm_object *shm_object_table_alloc(struct shm_object_table *table,
                        int stream_fd,
                        int cpu)
 {
-       int oldnode, node;
        struct shm_object *shm_object;
+#ifdef HAVE_LIBNUMA
+       int oldnode, node;
 
        oldnode = numa_preferred();
        if (cpu >= 0) {
@@ -258,6 +262,7 @@ struct shm_object *shm_object_table_alloc(struct shm_object_table *table,
        }
        if (cpu < 0 || node < 0)
                numa_set_localalloc();
+#endif /* HAVE_LIBNUMA */
        switch (type) {
        case SHM_OBJECT_SHM:
                shm_object = _shm_object_table_alloc_shm(table, memory_map_size,
@@ -269,7 +274,9 @@ struct shm_object *shm_object_table_alloc(struct shm_object_table *table,
        default:
                assert(0);
        }
+#ifdef HAVE_LIBNUMA
        numa_set_preferred(oldnode);
+#endif /* HAVE_LIBNUMA */
        return shm_object;
 }
 
This page took 0.028404 seconds and 5 git commands to generate.