mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2026-08-09 06:14:34 +02:00
A recent build failure[1] exposed the diffculty of working with the
current octal and hex definitions of O_ flags when trying to find a gap
for a new flag. This difficulty is compounded by the fact that O_ flags
may have architectural specific values.
Replace the hex/octal #defines, which are hard to parse when looking for
free bits, with explicit bit shifts like (1 << 11). Also, add comments
that identify which architectures redefine some of the seemingly free
("cursed") bits in uapi/asm-generic/fcntl.h. These should not be used to
define new O_ flags (for now, at least).
The translastion was done with Claude Opus 4.8, and verified with a
(non-AI) gawk script. The accounting of which architectures claim
which bit-gaps in uapi/asm-generic/fcntl.h is also done by hand.
[1]: https://lore.kernel.org/all/agruPPybCx8q2XcJ@sirena.org.uk/
Assisted-by: Claude:Opus 4.8
Signed-off-by: Jori Koolstra <jkoolstra@xs4all.nl>
Link: https://patch.msgid.link/20260604222405.5382-1-jkoolstra@xs4all.nl
Signed-off-by: Christian Brauner (Amutable) <brauner@kernel.org>
40 lines
1021 B
C
40 lines
1021 B
C
/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
|
|
#ifndef _PARISC_FCNTL_H
|
|
#define _PARISC_FCNTL_H
|
|
|
|
#define O_APPEND (1 << 3)
|
|
#define O_CREAT (1 << 8) /* not fcntl */
|
|
#define O_EXCL (1 << 10) /* not fcntl */
|
|
#define O_LARGEFILE (1 << 11)
|
|
#define __O_SYNC (1 << 15)
|
|
#define O_SYNC (__O_SYNC|O_DSYNC)
|
|
#define O_NONBLOCK (1 << 16)
|
|
#define O_NOCTTY (1 << 17) /* not fcntl */
|
|
#define O_DSYNC (1 << 18)
|
|
#define O_NOATIME (1 << 20)
|
|
#define O_CLOEXEC (1 << 21) /* set close_on_exec */
|
|
|
|
#define O_DIRECTORY (1 << 12) /* must be a directory */
|
|
#define O_NOFOLLOW (1 << 7) /* don't follow links */
|
|
|
|
#define O_PATH (1 << 22)
|
|
#define __O_TMPFILE (1 << 23)
|
|
|
|
#define F_GETLK64 8
|
|
#define F_SETLK64 9
|
|
#define F_SETLKW64 10
|
|
|
|
#define F_GETOWN 11 /* for sockets. */
|
|
#define F_SETOWN 12 /* for sockets. */
|
|
#define F_SETSIG 13 /* for sockets. */
|
|
#define F_GETSIG 14 /* for sockets. */
|
|
|
|
/* for posix fcntl() and lockf() */
|
|
#define F_RDLCK 01
|
|
#define F_WRLCK 02
|
|
#define F_UNLCK 03
|
|
|
|
#include <asm-generic/fcntl.h>
|
|
|
|
#endif
|