summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--meson.build1
-rw-r--r--src/basic/missing_syscall.h20
2 files changed, 21 insertions, 0 deletions
diff --git a/meson.build b/meson.build
index 6885884a00..4a59784536 100644
--- a/meson.build
+++ b/meson.build
@@ -629,6 +629,7 @@ foreach ident : [
['open_tree', '''#include <sys/mount.h>'''],
['fsopen', '''#include <sys/mount.h>'''],
['fsconfig', '''#include <sys/mount.h>'''],
+ ['fsmount', '''#include <sys/mount.h>'''],
['getdents64', '''#include <dirent.h>'''],
]
diff --git a/src/basic/missing_syscall.h b/src/basic/missing_syscall.h
index 98cd037962..3d66ab7d7a 100644
--- a/src/basic/missing_syscall.h
+++ b/src/basic/missing_syscall.h
@@ -609,6 +609,26 @@ static inline int missing_fsconfig(int fd, unsigned cmd, const char *key, const
/* ======================================================================= */
+#if !HAVE_FSMOUNT
+
+#ifndef FSMOUNT_CLOEXEC
+#define FSMOUNT_CLOEXEC 0x00000001
+#endif
+
+static inline int missing_fsmount(int fd, unsigned flags, unsigned ms_flags) {
+# if defined __NR_fsmount && __NR_fsmount >= 0
+ return syscall(__NR_fsmount, fd, flags, ms_flags);
+# else
+ errno = ENOSYS;
+ return -1;
+# endif
+}
+
+# define fsmount missing_fsmount
+#endif
+
+/* ======================================================================= */
+
#if !HAVE_GETDENTS64
static inline ssize_t missing_getdents64(int fd, void *buffer, size_t length) {