]> git.ipfire.org Git - thirdparty/lxc.git/commitdiff
syscalls: add fsconfig()
authorChristian Brauner <christian.brauner@ubuntu.com>
Wed, 22 Jul 2020 08:59:49 +0000 (10:59 +0200)
committerChristian Brauner <christian.brauner@ubuntu.com>
Thu, 23 Jul 2020 08:20:50 +0000 (10:20 +0200)
Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
configure.ac
src/lxc/syscall_numbers.h
src/lxc/syscall_wrappers.h

index 32fcdc230dc82c4e492e8579ea44a78bca4d6830..8178a4452eeb1c6d52f7d882be6946fd389d27b5 100644 (file)
@@ -622,7 +622,7 @@ AC_CHECK_HEADER([ifaddrs.h],
 AC_HEADER_MAJOR
 
 # Check for some syscalls functions
-AC_CHECK_FUNCS([setns pivot_root sethostname unshare rand_r confstr faccessat gettid memfd_create move_mount open_tree execveat clone3 fsopen fspick])
+AC_CHECK_FUNCS([setns pivot_root sethostname unshare rand_r confstr faccessat gettid memfd_create move_mount open_tree execveat clone3 fsopen fspick fsconfig])
 AC_CHECK_TYPES([struct clone_args], [], [], [[#include <linux/sched.h>]])
 AC_CHECK_MEMBERS([struct clone_args.set_tid],[],[],[[#include <linux/sched.h>]])
 AC_CHECK_MEMBERS([struct clone_args.cgroup],[],[],[[#include <linux/sched.h>]])
index cbd69803ea9c583e20ea388e3cb4cf80c30980bb..0cc2d674267a3e055c5b79355c5f3868ed32344b 100644 (file)
        #endif
 #endif
 
+#ifndef __NR_fsconfig
+       #if defined __alpha__
+               #define __NR_fsconfig 541
+       #elif defined _MIPS_SIM
+               #if _MIPS_SIM == _MIPS_SIM_ABI32        /* o32 */
+                       #define __NR_fsconfig 4431
+               #endif
+               #if _MIPS_SIM == _MIPS_SIM_NABI32       /* n32 */
+                       #define __NR_fsconfig 6431
+               #endif
+               #if _MIPS_SIM == _MIPS_SIM_ABI64        /* n64 */
+                       #define __NR_fsconfig 5431
+               #endif
+       #elif defined __ia64__
+               #define __NR_fsconfig (431 + 1024)
+       #else
+               #define __NR_fsconfig 431
+       #endif
+#endif
+
 #endif /* __LXC_SYSCALL_NUMBERS_H */
index 6d4f8f42cdbb6053ac1c292c638608ff30c93504..aeb1db8ac98865ada12deb03442443043acb96e3 100644 (file)
@@ -181,4 +181,14 @@ static inline int fspick_lxc(int dfd, const char *path, unsigned int flags)
 extern int fspick(int dfd, const char *path, unsigned int flags);
 #endif
 
+#ifndef HAVE_FSCONFIG
+static inline int fsconfig_lxc(int fd, unsigned int cmd, const char *key, const void *value, int aux)
+{
+       return syscall(__NR_fsconfig, fd, cmd, key, value, aux);
+}
+#define fsconfig fsconfig_lxc
+#else
+extern int fsconfig(int fd, unsigned int cmd, const char *key, const void *value, int aux);
+#endif
+
 #endif /* __LXC_SYSCALL_WRAPPER_H */