xref: /linux/tools/testing/selftests/filesystems/overlayfs/wrappers.h (revision 60675d4ca1ef0857e44eba5849b74a3a998d0c0f)
1e94fdd5dSChristian Brauner // SPDX-License-Identifier: GPL-2.0
2e94fdd5dSChristian Brauner //
3e94fdd5dSChristian Brauner #ifndef __SELFTEST_OVERLAYFS_WRAPPERS_H__
4e94fdd5dSChristian Brauner #define __SELFTEST_OVERLAYFS_WRAPPERS_H__
5e94fdd5dSChristian Brauner 
6e94fdd5dSChristian Brauner #define _GNU_SOURCE
7e94fdd5dSChristian Brauner 
8e94fdd5dSChristian Brauner #include <linux/types.h>
9e94fdd5dSChristian Brauner #include <linux/mount.h>
10e94fdd5dSChristian Brauner #include <sys/syscall.h>
11e94fdd5dSChristian Brauner 
12e94fdd5dSChristian Brauner static inline int sys_fsopen(const char *fsname, unsigned int flags)
13e94fdd5dSChristian Brauner {
14e94fdd5dSChristian Brauner 	return syscall(__NR_fsopen, fsname, flags);
15e94fdd5dSChristian Brauner }
16e94fdd5dSChristian Brauner 
17e94fdd5dSChristian Brauner static inline int sys_fsconfig(int fd, unsigned int cmd, const char *key,
18e94fdd5dSChristian Brauner 			       const char *value, int aux)
19e94fdd5dSChristian Brauner {
20e94fdd5dSChristian Brauner 	return syscall(__NR_fsconfig, fd, cmd, key, value, aux);
21e94fdd5dSChristian Brauner }
22e94fdd5dSChristian Brauner 
23e94fdd5dSChristian Brauner static inline int sys_fsmount(int fd, unsigned int flags,
24e94fdd5dSChristian Brauner 			      unsigned int attr_flags)
25e94fdd5dSChristian Brauner {
26e94fdd5dSChristian Brauner 	return syscall(__NR_fsmount, fd, flags, attr_flags);
27e94fdd5dSChristian Brauner }
28e94fdd5dSChristian Brauner 
29e94fdd5dSChristian Brauner static inline int sys_mount(const char *src, const char *tgt, const char *fst,
30e94fdd5dSChristian Brauner 			    unsigned long flags, const void *data)
31e94fdd5dSChristian Brauner {
32e94fdd5dSChristian Brauner 	return syscall(__NR_mount, src, tgt, fst, flags, data);
33e94fdd5dSChristian Brauner }
34e94fdd5dSChristian Brauner 
35*af919914SChristian Brauner #ifndef MOVE_MOUNT_F_EMPTY_PATH
36*af919914SChristian Brauner #define MOVE_MOUNT_F_EMPTY_PATH 0x00000004 /* Empty from path permitted */
37*af919914SChristian Brauner #endif
38*af919914SChristian Brauner 
39e94fdd5dSChristian Brauner static inline int sys_move_mount(int from_dfd, const char *from_pathname,
40e94fdd5dSChristian Brauner 				 int to_dfd, const char *to_pathname,
41e94fdd5dSChristian Brauner 				 unsigned int flags)
42e94fdd5dSChristian Brauner {
43e94fdd5dSChristian Brauner 	return syscall(__NR_move_mount, from_dfd, from_pathname, to_dfd,
44e94fdd5dSChristian Brauner 		       to_pathname, flags);
45e94fdd5dSChristian Brauner }
46e94fdd5dSChristian Brauner 
47e94fdd5dSChristian Brauner #endif
48