# 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], [])
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)
*/
#define _LGPL_SOURCE
+#include <config.h>
#include "shm.h"
#include <unistd.h>
#include <fcntl.h>
#include <dirent.h>
#include <lttng/align.h>
#include <limits.h>
+#ifdef HAVE_LIBNUMA
#include <numa.h>
+#endif
#include <helper.h>
#include <ust-fd.h>
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) {
}
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,
default:
assert(0);
}
+#ifdef HAVE_LIBNUMA
numa_set_preferred(oldnode);
+#endif /* HAVE_LIBNUMA */
return shm_object;
}