add memfd_create syscall wrapper
authorSzabolcs Nagy <nsz@port70.net>
Tue, 19 Jun 2018 20:28:03 +0000 (20:28 +0000)
committerRich Felker <dalias@aerifal.cx>
Thu, 21 Jun 2018 01:36:04 +0000 (21:36 -0400)
memfd_create was added in linux v3.17 and glibc has api for it.

include/sys/mman.h
src/linux/memfd_create.c [new file with mode: 0644]

index 80e1da756ff79fbd7e1dc5602b3ee2d00a13424e..99d02a2e556fdf0c60165f16a3050d2828231dba 100644 (file)
@@ -99,6 +99,10 @@ extern "C" {
 #define MREMAP_FIXED 2
 
 #define MLOCK_ONFAULT 0x01
+
+#define MFD_CLOEXEC 0x0001U
+#define MFD_ALLOW_SEALING 0x0002U
+#define MFD_HUGETLB 0x0004U
 #endif
 
 #include <bits/mman.h>
@@ -119,6 +123,7 @@ int munlockall (void);
 #ifdef _GNU_SOURCE
 void *mremap (void *, size_t, size_t, int, ...);
 int remap_file_pages (void *, size_t, int, size_t, int);
+int memfd_create (const char *, unsigned);
 int mlock2 (const void *, size_t, unsigned);
 #endif
 
diff --git a/src/linux/memfd_create.c b/src/linux/memfd_create.c
new file mode 100644 (file)
index 0000000..1649fe5
--- /dev/null
@@ -0,0 +1,8 @@
+#define _GNU_SOURCE 1
+#include <sys/mman.h>
+#include "syscall.h"
+
+int memfd_create(const char *name, unsigned flags)
+{
+       return syscall(SYS_memfd_create, name, flags);
+}