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 #define F_GETLK 5 71 #define F_SETLK 6 72 #define F_SETLKW 7 73 #define F_SETOWN 8 74 #define F_GETOWN 9 75 #define F_SETSIG 10 76 #define F_GETSIG 11 77 #define F_GETLK64 12 78 #define F_SETLK64 13 79 #define F_SETLKW64 14 80 #define F_SETOWN_EX 15 81 #define F_GETOWN_EX 16 82 83 // Open File Description Locks. 84 #define F_OFD_GETLK 36 85 #define F_OFD_SETLK 37 86 #define F_OFD_SETLKW 38 87 88 // Close on succesful 89 #define F_CLOEXEC 1 90 91 // Close on execute for fcntl. 92 #define FD_CLOEXEC 1 93 94 #define F_RDLCK 0 95 #define F_WRLCK 1 96 #define F_UNLCK 2 97 98 // For Large File Support 99 #if defined(_LARGEFILE64_SOURCE) 100 #define F_GETLK F_GETLK64 101 #define F_SETLK F_SETLK64 102 #define F_SETLKW F_SETLKW64 103 #endif 104 105 #endif // LLVM_LIBC_MACROS_LINUX_FCNTL_MACROS_H 106