Linux kernel mirror (for testing)
git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel
os
linux
fork
Configure Feed
Select the types of activity you want to include in your feed.
1// SPDX-License-Identifier: GPL-2.0
2//
3#ifndef __SELFTEST_OVERLAYFS_WRAPPERS_H__
4#define __SELFTEST_OVERLAYFS_WRAPPERS_H__
5
6#define _GNU_SOURCE
7
8#include <linux/types.h>
9#include <linux/mount.h>
10#include <sys/syscall.h>
11
12#ifndef STATX_MNT_ID_UNIQUE
13#define STATX_MNT_ID_UNIQUE 0x00004000U /* Want/got extended stx_mount_id */
14#endif
15
16static inline int sys_fsopen(const char *fsname, unsigned int flags)
17{
18 return syscall(__NR_fsopen, fsname, flags);
19}
20
21static inline int sys_fsconfig(int fd, unsigned int cmd, const char *key,
22 const char *value, int aux)
23{
24 return syscall(__NR_fsconfig, fd, cmd, key, value, aux);
25}
26
27static inline int sys_fsmount(int fd, unsigned int flags,
28 unsigned int attr_flags)
29{
30 return syscall(__NR_fsmount, fd, flags, attr_flags);
31}
32
33static inline int sys_mount(const char *src, const char *tgt, const char *fst,
34 unsigned long flags, const void *data)
35{
36 return syscall(__NR_mount, src, tgt, fst, flags, data);
37}
38
39#ifndef MOVE_MOUNT_F_EMPTY_PATH
40#define MOVE_MOUNT_F_EMPTY_PATH 0x00000004 /* Empty from path permitted */
41#endif
42
43#ifndef MOVE_MOUNT_T_EMPTY_PATH
44#define MOVE_MOUNT_T_EMPTY_PATH 0x00000040 /* Empty to path permitted */
45#endif
46
47#ifndef __NR_move_mount
48 #if defined __alpha__
49 #define __NR_move_mount 539
50 #elif defined _MIPS_SIM
51 #if _MIPS_SIM == _MIPS_SIM_ABI32 /* o32 */
52 #define __NR_move_mount 4429
53 #endif
54 #if _MIPS_SIM == _MIPS_SIM_NABI32 /* n32 */
55 #define __NR_move_mount 6429
56 #endif
57 #if _MIPS_SIM == _MIPS_SIM_ABI64 /* n64 */
58 #define __NR_move_mount 5429
59 #endif
60 #else
61 #define __NR_move_mount 429
62 #endif
63#endif
64
65static inline int sys_move_mount(int from_dfd, const char *from_pathname,
66 int to_dfd, const char *to_pathname,
67 unsigned int flags)
68{
69 return syscall(__NR_move_mount, from_dfd, from_pathname, to_dfd,
70 to_pathname, flags);
71}
72
73#ifndef OPEN_TREE_CLONE
74#define OPEN_TREE_CLONE 1
75#endif
76
77#ifndef OPEN_TREE_CLOEXEC
78#define OPEN_TREE_CLOEXEC O_CLOEXEC
79#endif
80
81#ifndef AT_RECURSIVE
82#define AT_RECURSIVE 0x8000 /* Apply to the entire subtree */
83#endif
84
85#ifndef __NR_open_tree
86 #if defined __alpha__
87 #define __NR_open_tree 538
88 #elif defined _MIPS_SIM
89 #if _MIPS_SIM == _MIPS_SIM_ABI32 /* o32 */
90 #define __NR_open_tree 4428
91 #endif
92 #if _MIPS_SIM == _MIPS_SIM_NABI32 /* n32 */
93 #define __NR_open_tree 6428
94 #endif
95 #if _MIPS_SIM == _MIPS_SIM_ABI64 /* n64 */
96 #define __NR_open_tree 5428
97 #endif
98 #else
99 #define __NR_open_tree 428
100 #endif
101#endif
102
103static inline int sys_open_tree(int dfd, const char *filename, unsigned int flags)
104{
105 return syscall(__NR_open_tree, dfd, filename, flags);
106}
107
108#endif