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