]> git.ipfire.org Git - thirdparty/lxc.git/commitdiff
syscalls: add fsopen()
authorChristian Brauner <christian.brauner@ubuntu.com>
Wed, 22 Jul 2020 08:50:20 +0000 (10:50 +0200)
committerChristian Brauner <christian.brauner@ubuntu.com>
Thu, 23 Jul 2020 08:20:48 +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 f74d29a7260df561bcfff0f7347170d9377b4397..85d2668850692cf28f4b27ca80f387c6389055bb 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])
+AC_CHECK_FUNCS([setns pivot_root sethostname unshare rand_r confstr faccessat gettid memfd_create move_mount open_tree execveat clone3 fsopen])
 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 bfd0e57ab96e0d9f14312e461467f8723e004a99..678683092420d399ad72639d829487e17a8bb890 100644 (file)
        #endif
 #endif
 
+#ifndef __NR_fsopen
+       #if defined __alpha__
+               #define __NR_fsopen 540
+       #elif defined _MIPS_SIM
+               #if _MIPS_SIM == _MIPS_SIM_ABI32        /* o32 */
+                       #define __NR_fsopen 4430
+               #endif
+               #if _MIPS_SIM == _MIPS_SIM_NABI32       /* n32 */
+                       #define __NR_fsopen 6430
+               #endif
+               #if _MIPS_SIM == _MIPS_SIM_ABI64        /* n64 */
+                       #define __NR_fsopen 5430
+               #endif
+       #elif defined __ia64__
+               #define __NR_fsopen (430 + 1024)
+       #else
+               #define __NR_fsopen 430
+       #endif
+#endif
+
 #endif /* __LXC_SYSCALL_NUMBERS_H */
index 041daf3575979f44719dd016528fc68727cd77df..8e7937d4d410903088f571a0cef94163dff4e705 100644 (file)
@@ -161,4 +161,14 @@ static inline int open_tree_lxc(int dfd, const char *filename, unsigned int flag
 extern int open_tree(int dfd, const char *filename, unsigned int flags);
 #endif
 
+#ifndef HAVE_FSOPEN
+static inline int fsopen_lxc(const char *fs_name, unsigned int flags)
+{
+       return syscall(__NR_fsopen, fs_name, flags);
+}
+#define fsopen fsopen_lxc
+#else
+extern int fsopen(const char *fs_name, unsigned int flags);
+#endif
+
 #endif /* __LXC_SYSCALL_WRAPPER_H */