diff options
| author | Kacper <kacper@mail.openlinux.dev> | 2025-12-07 20:10:31 +0100 |
|---|---|---|
| committer | Kacper <kacper@mail.openlinux.dev> | 2025-12-07 20:10:31 +0100 |
| commit | fc00c656c96528112d05cf0edf8631bd5eaea446 (patch) | |
| tree | a6e0e6c588191a8bd1c64afc3b7a258e3e66c236 /include/arch/x86_64/linux/openat2.h | |
Add build system scaffolding and libc headers
Diffstat (limited to 'include/arch/x86_64/linux/openat2.h')
| -rw-r--r-- | include/arch/x86_64/linux/openat2.h | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/include/arch/x86_64/linux/openat2.h b/include/arch/x86_64/linux/openat2.h new file mode 100644 index 00000000..5041a70e --- /dev/null +++ b/include/arch/x86_64/linux/openat2.h @@ -0,0 +1,49 @@ +/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ +#ifndef _LINUX_OPENAT2_H +#define _LINUX_OPENAT2_H + +#include <linux/types.h> + +/* + * Arguments for how openat2(2) should open the target path. If only @flags and + * @mode are non-zero, then openat2(2) operates very similarly to openat(2). + * + * However, unlike openat(2), unknown or invalid bits in @flags result in + * -EINVAL rather than being silently ignored. @mode must be zero unless one of + * {O_CREAT, O_TMPFILE} are set. + * + * @flags: O_* flags. + * @mode: O_CREAT/O_TMPFILE file mode. + * @resolve: RESOLVE_* flags. + */ +struct open_how { + __u64 flags; + __u64 mode; + __u64 resolve; +}; + +/* how->resolve flags for openat2(2). */ +#define RESOLVE_NO_XDEV \ + 0x01 /* Block mount-point crossings \ + (includes bind-mounts). */ +#define RESOLVE_NO_MAGICLINKS \ + 0x02 /* Block traversal through procfs-style \ + "magic-links". */ +#define RESOLVE_NO_SYMLINKS \ + 0x04 /* Block traversal through all symlinks \ + (implies OEXT_NO_MAGICLINKS) */ +#define RESOLVE_BENEATH \ + 0x08 /* Block "lexical" trickery like \ + "..", symlinks, and absolute \ + paths which escape the dirfd. */ +#define RESOLVE_IN_ROOT \ + 0x10 /* Make all jumps to "/" and ".." \ + be scoped inside the dirfd \ + (similar to chroot(2)). */ +#define RESOLVE_CACHED \ + 0x20 /* Only complete if resolution can be \ + completed through cached lookup. May \ + return -EAGAIN if that's not \ + possible. */ + +#endif /* _LINUX_OPENAT2_H */ |
