[libc-commits] [libc] [libc] Add a few missing fcntl.h macro. (PR #226810)
Alexey Samsonov via libc-commits
libc-commits at lists.llvm.org
Sun Sep 27 10:06:05 PDT 2026
https://github.com/vonosmas created https://github.com/llvm/llvm-project/pull/226810
* Add a few POSIX-specified symbolic constants to `<fcntl.h>`: `O_RSYNC`,
`AT_SYMLINK_FOLLOW`, and `F_DUPFD_CLOEXEC`.
* Don't add `_CLOFORK` variants, since those are not supported by Linux.
* List the constants in the `fcntl.yaml` file for posterity.
>From 7a6dc38952666752a482aaf048a4a8867b6ade05 Mon Sep 17 00:00:00 2001
From: Alexey Samsonov <vonosmas at gmail.com>
Date: Sun, 27 Sep 2026 17:02:22 +0000
Subject: [PATCH] [libc] Add a few missing fcntl.h macro.
---
libc/include/fcntl.yaml | 78 ++++++++++++++++++-
.../llvm-libc-macros/linux/fcntl-macros.h | 6 ++
2 files changed, 82 insertions(+), 2 deletions(-)
diff --git a/libc/include/fcntl.yaml b/libc/include/fcntl.yaml
index 849c6247d5786..160e25a304aca 100644
--- a/libc/include/fcntl.yaml
+++ b/libc/include/fcntl.yaml
@@ -2,13 +2,87 @@ header: fcntl.h
standards:
- posix
macros:
+ - macro_name: O_CLOEXEC
+ macro_header: fcntl-macros.h
+ - macro_name: O_CREAT
+ macro_header: fcntl-macros.h
+ - macro_name: O_DIRECTORY
+ macro_header: fcntl-macros.h
+ - macro_name: O_EXCL
+ macro_header: fcntl-macros.h
+ - macro_name: O_NOCTTY
+ macro_header: fcntl-macros.h
+ - macro_name: O_NOFOLLOW
+ macro_header: fcntl-macros.h
+ - macro_name: O_TRUNC
+ macro_header: fcntl-macros.h
+ - macro_name: O_APPEND
+ macro_header: fcntl-macros.h
+ - macro_name: O_DSYNC
+ macro_header: fcntl-macros.h
+ - macro_name: O_NONBLOCK
+ macro_header: fcntl-macros.h
+ - macro_name: O_RSYNC
+ macro_header: fcntl-macros.h
+ - macro_name: O_SYNC
+ macro_header: fcntl-macros.h
+ - macro_name: O_ACCMODE
+ macro_header: fcntl-macros.h
+ - macro_name: O_RDONLY
+ macro_header: fcntl-macros.h
+ - macro_name: O_RDWR
+ macro_header: fcntl-macros.h
+ - macro_name: O_WRONLY
+ macro_header: fcntl-macros.h
- macro_name: AT_FDCWD
macro_header: fcntl-macros.h
- - macro_name: AT_REMOVEDIR
+ - macro_name: AT_EACCESS
macro_header: fcntl-macros.h
- macro_name: AT_SYMLINK_NOFOLLOW
macro_header: fcntl-macros.h
- - macro_name: AT_EACCESS
+ - macro_name: AT_SYMLINK_FOLLOW
+ macro_header: fcntl-macros.h
+ - macro_name: AT_REMOVEDIR
+ macro_header: fcntl-macros.h
+ - macro_name: F_DUPFD
+ macro_header: fcntl-macros.h
+ - macro_name: F_DUPFD_CLOEXEC
+ macro_header: fcntl-macros.h
+ - macro_name: F_GETFD
+ macro_header: fcntl-macros.h
+ - macro_name: F_SETFD
+ macro_header: fcntl-macros.h
+ - macro_name: F_GETFL
+ macro_header: fcntl-macros.h
+ - macro_name: F_SETFL
+ macro_header: fcntl-macros.h
+ - macro_name: F_GETLK
+ macro_header: fcntl-macros.h
+ - macro_name: F_SETLK
+ macro_header: fcntl-macros.h
+ - macro_name: F_SETLKW
+ macro_header: fcntl-macros.h
+ - macro_name: F_OFD_GETLK
+ macro_header: fcntl-macros.h
+ - macro_name: F_OFD_SETLK
+ macro_header: fcntl-macros.h
+ - macro_name: F_OFD_SETLKW
+ macro_header: fcntl-macros.h
+ - macro_name: F_GETOWN
+ macro_header: fcntl-macros.h
+ - macro_name: F_GETOWN_EX
+ macro_header: fcntl-macros.h
+ - macro_name: F_SETOWN
+ macro_header: fcntl-macros.h
+ - macro_name: F_SETOWN_EX
+ macro_header: fcntl-macros.h
+ - macro_name: FD_CLOEXEC
+ macro_header: fcntl-macros.h
+ - macro_name: F_RDLCK
+ macro_header: fcntl-macros.h
+ - macro_name: F_UNLCK
+ macro_header: fcntl-macros.h
+ - macro_name: F_WRLCK
macro_header: fcntl-macros.h
- macro_name: POSIX_FADV_NORMAL
macro_header: fcntl-macros.h
diff --git a/libc/include/llvm-libc-macros/linux/fcntl-macros.h b/libc/include/llvm-libc-macros/linux/fcntl-macros.h
index 648c4a9ec00da..f21339abfaad7 100644
--- a/libc/include/llvm-libc-macros/linux/fcntl-macros.h
+++ b/libc/include/llvm-libc-macros/linux/fcntl-macros.h
@@ -22,6 +22,7 @@
#define O_NDELAY O_NONBLOCK
#define O_PATH 010000000
#define O_SYNC 004010000
+#define O_RSYNC O_SYNC
#define O_TRUNC 000001000
#ifdef __aarch64__
@@ -58,6 +59,10 @@
// should not be followed.
#define AT_SYMLINK_NOFOLLOW 0x100
+// Special flag for functions like linkat to convey that symlinks
+// should be followed.
+#define AT_SYMLINK_FOLLOW 0x400
+
// Allow empty relative pathname.
#define AT_EMPTY_PATH 0x1000
@@ -82,6 +87,7 @@
#define F_SETLKW64 14
#define F_SETOWN_EX 15
#define F_GETOWN_EX 16
+#define F_DUPFD_CLOEXEC 1030
// Open File Description Locks.
#define F_OFD_GETLK 36
More information about the libc-commits
mailing list