From eddafda6460c8591678cc354519afe69b7e3f472 Mon Sep 17 00:00:00 2001 From: Khem Raj Date: Sat, 27 Jan 2018 13:14:03 -0800 Subject: [PATCH] build-sys: Check if memfd_create is already defined glibc 2.27+ has introduced this function BugLink: https://bugs.freedesktop.org/show_bug.cgi?id=104815 --- configure.ac | 7 +++++++ src/pulsecore/memfd-wrappers.h | 4 ++-- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/configure.ac b/configure.ac index 77b5ff5..aa97944 100644 --- a/configure.ac +++ b/configure.ac @@ -603,6 +603,10 @@ AS_IF([test "x$enable_memfd" != "xno"], AC_CHECK_DECL(SYS_memfd_create, [HAVE_MEMFD=1], [HAVE_MEMFD=0], [#include ]), [HAVE_MEMFD=0]) +AS_IF([test "x$enable_memfd" != "xno"], + AC_CHECK_FUNC(memfd_create, [HAVE_MEMFD_CREATE=1], [HAVE_MEMFD_CREATE=0], [#include ]), + [HAVE_MEMFD_CREATE=0]) + AS_IF([test "x$enable_memfd" = "xyes" && test "x$HAVE_MEMFD" = "x0"], [AC_MSG_ERROR([*** Your Linux kernel does not support memfd shared memory. *** Use linux v3.17 or higher for such a feature.])]) @@ -610,6 +614,9 @@ AS_IF([test "x$enable_memfd" = "xyes" && test "x$HAVE_MEMFD" = "x0"], AC_SUBST(HAVE_MEMFD) AM_CONDITIONAL([HAVE_MEMFD], [test "x$HAVE_MEMFD" = x1]) AS_IF([test "x$HAVE_MEMFD" = "x1"], AC_DEFINE([HAVE_MEMFD], 1, [Have memfd shared memory.])) +AC_SUBST(HAVE_MEMFD_CREATE) +AM_CONDITIONAL([HAVE_MEMFD_CREATE], [test "x$HAVE_MEMFD_CREATE" = x1]) +AS_IF([test "x$HAVE_MEMFD_CREATE" = "x1"], AC_DEFINE([HAVE_MEMFD_CREATE], 1, [Define to 1 if you have the `memfd_create` function.])) #### X11 (optional) #### diff --git a/src/pulsecore/memfd-wrappers.h b/src/pulsecore/memfd-wrappers.h index 3bed9b2..87ed758 100644 --- a/src/pulsecore/memfd-wrappers.h +++ b/src/pulsecore/memfd-wrappers.h @@ -32,11 +32,11 @@ * defined in the kernel header file , that file as * a whole conflicts with the original glibc header . */ - +#ifndef HAVE_MEMFD_CREATE static inline int memfd_create(const char *name, unsigned int flags) { return syscall(SYS_memfd_create, name, flags); } - +#endif /* memfd_create(2) flags */ #ifndef MFD_CLOEXEC -- 2.16.1