From: Christian Brauner Date: Wed, 18 Oct 2017 11:36:36 +0000 (+0200) Subject: utils: move memfd_create() definition X-Git-Tag: lxc-2.0.10~621 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=5d4dfde904c31691a006ec46bef61f7a7e733530;p=thirdparty%2Flxc.git utils: move memfd_create() definition Signed-off-by: Christian Brauner --- diff --git a/src/lxc/conf.c b/src/lxc/conf.c index 91816bebb..1d11c63b2 100644 --- a/src/lxc/conf.c +++ b/src/lxc/conf.c @@ -68,10 +68,6 @@ #include <../include/openpty.h> #endif -#ifdef HAVE_LINUX_MEMFD_H -#include -#endif - #include "af_unix.h" #include "caps.h" /* for lxc_caps_last_cap() */ #include "cgroup.h" @@ -178,59 +174,6 @@ static int sethostname(const char * name, size_t len) #define MS_LAZYTIME (1<<25) #endif -/* memfd_create() */ -#ifndef MFD_CLOEXEC -#define MFD_CLOEXEC 0x0001U -#endif - -#ifndef MFD_ALLOW_SEALING -#define MFD_ALLOW_SEALING 0x0002U -#endif - -#ifndef HAVE_MEMFD_CREATE -static int memfd_create(const char *name, unsigned int flags) { - #ifndef __NR_memfd_create - #if defined __i386__ - #define __NR_memfd_create 356 - #elif defined __x86_64__ - #define __NR_memfd_create 319 - #elif defined __arm__ - #define __NR_memfd_create 385 - #elif defined __aarch64__ - #define __NR_memfd_create 279 - #elif defined __s390__ - #define __NR_memfd_create 350 - #elif defined __powerpc__ - #define __NR_memfd_create 360 - #elif defined __sparc__ - #define __NR_memfd_create 348 - #elif defined __blackfin__ - #define __NR_memfd_create 390 - #elif defined __ia64__ - #define __NR_memfd_create 1340 - #elif defined _MIPS_SIM - #if _MIPS_SIM == _MIPS_SIM_ABI32 - #define __NR_memfd_create 4354 - #endif - #if _MIPS_SIM == _MIPS_SIM_NABI32 - #define __NR_memfd_create 6318 - #endif - #if _MIPS_SIM == _MIPS_SIM_ABI64 - #define __NR_memfd_create 5314 - #endif - #endif - #endif - #ifdef __NR_memfd_create - return syscall(__NR_memfd_create, name, flags); - #else - errno = ENOSYS; - return -1; - #endif -} -#else -extern int memfd_create(const char *name, unsigned int flags); -#endif - char *lxchook_names[NUM_LXC_HOOKS] = {"pre-start", "pre-mount", "mount", "autodev", "start", "stop", "post-stop", "clone", "destroy"}; diff --git a/src/lxc/utils.h b/src/lxc/utils.h index aadf382e3..606538a2a 100644 --- a/src/lxc/utils.h +++ b/src/lxc/utils.h @@ -39,6 +39,10 @@ #include #include +#ifdef HAVE_LINUX_MEMFD_H +#include +#endif + #include "initutils.h" /* Define __S_ISTYPE if missing from the C library. */ @@ -184,6 +188,59 @@ static inline int signalfd(int fd, const sigset_t *mask, int flags) #define LOOP_CTL_GET_FREE 0x4C82 #endif +/* memfd_create() */ +#ifndef MFD_CLOEXEC +#define MFD_CLOEXEC 0x0001U +#endif + +#ifndef MFD_ALLOW_SEALING +#define MFD_ALLOW_SEALING 0x0002U +#endif + +#ifndef HAVE_MEMFD_CREATE +static inline int memfd_create(const char *name, unsigned int flags) { + #ifndef __NR_memfd_create + #if defined __i386__ + #define __NR_memfd_create 356 + #elif defined __x86_64__ + #define __NR_memfd_create 319 + #elif defined __arm__ + #define __NR_memfd_create 385 + #elif defined __aarch64__ + #define __NR_memfd_create 279 + #elif defined __s390__ + #define __NR_memfd_create 350 + #elif defined __powerpc__ + #define __NR_memfd_create 360 + #elif defined __sparc__ + #define __NR_memfd_create 348 + #elif defined __blackfin__ + #define __NR_memfd_create 390 + #elif defined __ia64__ + #define __NR_memfd_create 1340 + #elif defined _MIPS_SIM + #if _MIPS_SIM == _MIPS_SIM_ABI32 + #define __NR_memfd_create 4354 + #endif + #if _MIPS_SIM == _MIPS_SIM_NABI32 + #define __NR_memfd_create 6318 + #endif + #if _MIPS_SIM == _MIPS_SIM_ABI64 + #define __NR_memfd_create 5314 + #endif + #endif + #endif + #ifdef __NR_memfd_create + return syscall(__NR_memfd_create, name, flags); + #else + errno = ENOSYS; + return -1; + #endif +} +#else +extern int memfd_create(const char *name, unsigned int flags); +#endif + /* Struct to carry child pid from lxc_popen() to lxc_pclose(). * Not an opaque struct to allow direct access to the underlying FILE * * (i.e., struct lxc_popen_FILE *file; fgets(buf, sizeof(buf), file->f))