1//===-- Definition of macros from fcntl.h ---------------------------------===//
2//
3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4// See https://llvm.org/LICENSE.txt for license information.
5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6//
7//===----------------------------------------------------------------------===//
8
9#ifndef LLVM_LIBC_MACROS_LINUX_FCNTL_MACROS_H
10#define LLVM_LIBC_MACROS_LINUX_FCNTL_MACROS_H
11
12// File creation flags
13#define O_CLOEXEC 02000000
14#define O_CREAT 00000100
15#define O_PATH 010000000
16
17#ifdef __aarch64__
18#define O_DIRECTORY 040000
19#else
20#define O_DIRECTORY 00200000
21#endif
22
23#define O_EXCL 00000200
24#define O_NOCTTY 00000400
25
26#ifdef __aarch64__
27#define O_NOFOLLOW 0100000
28#else
29#define O_NOFOLLOW 00400000
30#endif
31
32#define O_TRUNC 00001000
33#define O_TMPFILE (020000000 | O_DIRECTORY)
34
35// File status flags
36#define O_APPEND 00002000
37#define O_DSYNC 00010000
38#define O_NONBLOCK 00004000
39#define O_SYNC 04000000 | O_DSYNC
40
41// File access mode mask
42#define O_ACCMODE 00000003
43
44// File access mode flags
45#define O_RDONLY 00000000
46#define O_RDWR 00000002
47#define O_WRONLY 00000001
48
49// Special directory FD to indicate that the path argument to
50// openat is relative to the current directory.
51#define AT_FDCWD -100
52
53// Special flag to the function unlinkat to indicate that it
54// has to perform the equivalent of "rmdir" on the path argument.
55#define AT_REMOVEDIR 0x200
56
57// Special flag for functions like lstat to convey that symlinks
58// should not be followed.
59#define AT_SYMLINK_NOFOLLOW 0x100
60
61// Allow empty relative pathname.
62#define AT_EMPTY_PATH 0x1000
63
64// Values of SYS_fcntl commands.
65#define F_DUPFD 0
66#define F_GETFD 1
67#define F_SETFD 2
68#define F_GETFL 3
69#define F_SETFL 4
70
71#endif // LLVM_LIBC_MACROS_LINUX_FCNTL_MACROS_H
72

source code of libc/include/llvm-libc-macros/linux/fcntl-macros.h