* [PATCH 1/3] perf trace: Include copied headers in the beauty directory
@ 2026-05-25 1:11 Namhyung Kim
2026-05-25 1:11 ` [PATCH 2/3] perf trace: Copy uapi/linux/eventfd.h for beautifier Namhyung Kim
` (3 more replies)
0 siblings, 4 replies; 7+ messages in thread
From: Namhyung Kim @ 2026-05-25 1:11 UTC (permalink / raw)
To: Arnaldo Carvalho de Melo
Cc: Ian Rogers, Jiri Olsa, Adrian Hunter, James Clark, Peter Zijlstra,
Ingo Molnar, LKML, linux-perf-users
We keep uptodate copied of the kernel headers, let's use it directly and
don't worry about missing definitions.
Signed-off-by: Namhyung Kim <namhyung@kernel.org>
---
tools/perf/trace/beauty/clone.c | 7 ++++---
tools/perf/trace/beauty/fcntl.c | 19 ++-----------------
tools/perf/trace/beauty/fs_at_flags.c | 12 ++----------
tools/perf/trace/beauty/fsmount.c | 11 ++---------
tools/perf/trace/beauty/sched_policy.c | 10 +---------
tools/perf/trace/beauty/sync_file_range.c | 12 ++----------
6 files changed, 13 insertions(+), 58 deletions(-)
diff --git a/tools/perf/trace/beauty/clone.c b/tools/perf/trace/beauty/clone.c
index c9fa8f7e82b909fb..c80f800a45d04793 100644
--- a/tools/perf/trace/beauty/clone.c
+++ b/tools/perf/trace/beauty/clone.c
@@ -1,15 +1,16 @@
// SPDX-License-Identifier: LGPL-2.1
/*
- * trace/beauty/cone.c
+ * trace/beauty/clone.c
*
* Copyright (C) 2017, Red Hat Inc, Arnaldo Carvalho de Melo <acme@redhat.com>
*/
-#include "trace/beauty/beauty.h"
#include <linux/kernel.h>
#include <linux/log2.h>
#include <sys/types.h>
-#include <sched.h>
+#include "trace/beauty/beauty.h"
+#include "trace/beauty/include/uapi/linux/sched.h"
+
static size_t clone__scnprintf_flags(unsigned long flags, char *bf, size_t size, bool show_prefix)
{
diff --git a/tools/perf/trace/beauty/fcntl.c b/tools/perf/trace/beauty/fcntl.c
index e1b99b8f55eb0d7c..10fd6a2b75c353c4 100644
--- a/tools/perf/trace/beauty/fcntl.c
+++ b/tools/perf/trace/beauty/fcntl.c
@@ -5,25 +5,10 @@
* Copyright (C) 2017, Red Hat Inc, Arnaldo Carvalho de Melo <acme@redhat.com>
*/
-#include "trace/beauty/beauty.h"
#include <linux/kernel.h>
-#include <linux/fcntl.h>
-
-#ifndef F_GET_RW_HINT
-#define F_GET_RW_HINT (F_LINUX_SPECIFIC_BASE + 11)
-#endif
-
-#ifndef F_SET_RW_HINT
-#define F_SET_RW_HINT (F_LINUX_SPECIFIC_BASE + 12)
-#endif
-
-#ifndef F_GET_FILE_RW_HINT
-#define F_GET_FILE_RW_HINT (F_LINUX_SPECIFIC_BASE + 13)
-#endif
+#include "trace/beauty/beauty.h"
+#include "trace/beauty/include/uapi/linux/fcntl.h"
-#ifndef F_SET_FILE_RW_HINT
-#define F_SET_FILE_RW_HINT (F_LINUX_SPECIFIC_BASE + 14)
-#endif
static size_t fcntl__scnprintf_getfd(unsigned long val, char *bf, size_t size, bool show_prefix)
{
diff --git a/tools/perf/trace/beauty/fs_at_flags.c b/tools/perf/trace/beauty/fs_at_flags.c
index c200669cb944a417..085a3ba399a41dd4 100644
--- a/tools/perf/trace/beauty/fs_at_flags.c
+++ b/tools/perf/trace/beauty/fs_at_flags.c
@@ -5,18 +5,10 @@
* Copyright (C) 2017, Red Hat Inc, Arnaldo Carvalho de Melo <acme@redhat.com>
*/
-#include "trace/beauty/beauty.h"
#include <sys/types.h>
-#include <linux/fcntl.h>
#include <linux/log2.h>
-
-/*
- * uapi/linux/fcntl.h does not keep a copy in tools headers directory,
- * for system with kernel versions before v5.8, need to sync AT_EACCESS macro.
- */
-#ifndef AT_EACCESS
-#define AT_EACCESS 0x200
-#endif
+#include "trace/beauty/beauty.h"
+#include "trace/beauty/include/uapi/linux/fcntl.h"
#include "trace/beauty/generated/fs_at_flags_array.c"
static DEFINE_STRARRAY(fs_at_flags, "AT_");
diff --git a/tools/perf/trace/beauty/fsmount.c b/tools/perf/trace/beauty/fsmount.c
index 179e649fc72a4724..a84e3f9749ca97fc 100644
--- a/tools/perf/trace/beauty/fsmount.c
+++ b/tools/perf/trace/beauty/fsmount.c
@@ -5,16 +5,9 @@
* Copyright (C) 2019, Red Hat Inc, Arnaldo Carvalho de Melo <acme@redhat.com>
*/
-#include "trace/beauty/beauty.h"
#include <linux/log2.h>
-#include <sys/mount.h>
-
-#ifndef MOUNT_ATTR__ATIME
-#define MOUNT_ATTR__ATIME 0x00000070 /* Setting on how atime should be updated */
-#endif
-#ifndef MOUNT_ATTR_RELATIME
-#define MOUNT_ATTR_RELATIME 0x00000000 /* - Update atime relative to mtime/ctime. */
-#endif
+#include "trace/beauty/beauty.h"
+#include "trace/beauty/include/uapi/linux/mount.h"
static size_t fsmount__scnprintf_flags(unsigned long flags, char *bf, size_t size, bool show_prefix)
diff --git a/tools/perf/trace/beauty/sched_policy.c b/tools/perf/trace/beauty/sched_policy.c
index 3fb6d9e0fae9b4e6..f8c8d297c95fbdd1 100644
--- a/tools/perf/trace/beauty/sched_policy.c
+++ b/tools/perf/trace/beauty/sched_policy.c
@@ -1,7 +1,6 @@
// SPDX-License-Identifier: LGPL-2.1
#include "trace/beauty/beauty.h"
-
-#include <sched.h>
+#include "trace/beauty/include/uapi/linux/sched.h"
/*
* Not defined anywhere else, probably, just to make sure we
@@ -9,13 +8,6 @@
*/
#define SCHED_POLICY_MASK 0xff
-#ifndef SCHED_DEADLINE
-#define SCHED_DEADLINE 6
-#endif
-#ifndef SCHED_RESET_ON_FORK
-#define SCHED_RESET_ON_FORK 0x40000000
-#endif
-
size_t syscall_arg__scnprintf_sched_policy(char *bf, size_t size,
struct syscall_arg *arg)
{
diff --git a/tools/perf/trace/beauty/sync_file_range.c b/tools/perf/trace/beauty/sync_file_range.c
index 3e8f50ff4fc701f9..50a6c458dff704fa 100644
--- a/tools/perf/trace/beauty/sync_file_range.c
+++ b/tools/perf/trace/beauty/sync_file_range.c
@@ -5,18 +5,10 @@
* Copyright (C) 2019, Red Hat Inc, Arnaldo Carvalho de Melo <acme@redhat.com>
*/
-#include "trace/beauty/beauty.h"
#include <linux/log2.h>
-#include <linux/fs.h>
+#include "trace/beauty/beauty.h"
+#include "trace/beauty/include/uapi/linux/fs.h"
-#ifndef SYNC_FILE_RANGE_WRITE_AND_WAIT
-#define SYNC_FILE_RANGE_WAIT_BEFORE 1
-#define SYNC_FILE_RANGE_WRITE 2
-#define SYNC_FILE_RANGE_WAIT_AFTER 4
-#define SYNC_FILE_RANGE_WRITE_AND_WAIT (SYNC_FILE_RANGE_WRITE | \
- SYNC_FILE_RANGE_WAIT_BEFORE | \
- SYNC_FILE_RANGE_WAIT_AFTER)
-#endif
static size_t sync_file_range__scnprintf_flags(unsigned long flags, char *bf, size_t size, bool show_prefix)
{
--
2.54.0.746.g67dd491aae-goog
^ permalink raw reply related [flat|nested] 7+ messages in thread* [PATCH 2/3] perf trace: Copy uapi/linux/eventfd.h for beautifier
2026-05-25 1:11 [PATCH 1/3] perf trace: Include copied headers in the beauty directory Namhyung Kim
@ 2026-05-25 1:11 ` Namhyung Kim
2026-05-25 1:11 ` [PATCH 3/3] perf trace: Copy uapi/linux/futex.h " Namhyung Kim
` (2 subsequent siblings)
3 siblings, 0 replies; 7+ messages in thread
From: Namhyung Kim @ 2026-05-25 1:11 UTC (permalink / raw)
To: Arnaldo Carvalho de Melo
Cc: Ian Rogers, Jiri Olsa, Adrian Hunter, James Clark, Peter Zijlstra,
Ingo Molnar, LKML, linux-perf-users
To make sure perf trace will see the latest definitions.
Signed-off-by: Namhyung Kim <namhyung@kernel.org>
---
| 1 +
tools/perf/trace/beauty/eventfd.c | 12 +-----------
tools/perf/trace/beauty/include/uapi/linux/eventfd.h | 11 +++++++++++
3 files changed, 13 insertions(+), 11 deletions(-)
create mode 100644 tools/perf/trace/beauty/include/uapi/linux/eventfd.h
--git a/tools/perf/check-headers.sh b/tools/perf/check-headers.sh
index 531c0e0e84dfa101..24660b2bd45e971f 100755
--- a/tools/perf/check-headers.sh
+++ b/tools/perf/check-headers.sh
@@ -90,6 +90,7 @@ declare -a BEAUTY_FILES=(
"include/uapi/drm/drm.h"
"include/uapi/drm/i915_drm.h"
"include/linux/socket.h"
+ "include/uapi/linux/eventfd.h"
"include/uapi/linux/fadvise.h"
"include/uapi/linux/fcntl.h"
"include/uapi/linux/fs.h"
diff --git a/tools/perf/trace/beauty/eventfd.c b/tools/perf/trace/beauty/eventfd.c
index 18b661282834b7d9..830a5b7ae455f157 100644
--- a/tools/perf/trace/beauty/eventfd.c
+++ b/tools/perf/trace/beauty/eventfd.c
@@ -1,17 +1,7 @@
// SPDX-License-Identifier: LGPL-2.1
#include "trace/beauty/beauty.h"
+#include "trace/beauty/include/uapi/linux/eventfd.h"
-#ifndef EFD_SEMAPHORE
-#define EFD_SEMAPHORE 1
-#endif
-
-#ifndef EFD_NONBLOCK
-#define EFD_NONBLOCK 00004000
-#endif
-
-#ifndef EFD_CLOEXEC
-#define EFD_CLOEXEC 02000000
-#endif
size_t syscall_arg__scnprintf_eventfd_flags(char *bf, size_t size, struct syscall_arg *arg)
{
diff --git a/tools/perf/trace/beauty/include/uapi/linux/eventfd.h b/tools/perf/trace/beauty/include/uapi/linux/eventfd.h
new file mode 100644
index 0000000000000000..2eb9ab6c32f30502
--- /dev/null
+++ b/tools/perf/trace/beauty/include/uapi/linux/eventfd.h
@@ -0,0 +1,11 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
+#ifndef _UAPI_LINUX_EVENTFD_H
+#define _UAPI_LINUX_EVENTFD_H
+
+#include <linux/fcntl.h>
+
+#define EFD_SEMAPHORE (1 << 0)
+#define EFD_CLOEXEC O_CLOEXEC
+#define EFD_NONBLOCK O_NONBLOCK
+
+#endif /* _UAPI_LINUX_EVENTFD_H */
--
2.54.0.746.g67dd491aae-goog
^ permalink raw reply related [flat|nested] 7+ messages in thread* [PATCH 3/3] perf trace: Copy uapi/linux/futex.h for beautifier
2026-05-25 1:11 [PATCH 1/3] perf trace: Include copied headers in the beauty directory Namhyung Kim
2026-05-25 1:11 ` [PATCH 2/3] perf trace: Copy uapi/linux/eventfd.h for beautifier Namhyung Kim
@ 2026-05-25 1:11 ` Namhyung Kim
2026-05-25 1:31 ` [PATCH 1/3] perf trace: Include copied headers in the beauty directory sashiko-bot
2026-05-25 11:46 ` Arnaldo Carvalho de Melo
3 siblings, 0 replies; 7+ messages in thread
From: Namhyung Kim @ 2026-05-25 1:11 UTC (permalink / raw)
To: Arnaldo Carvalho de Melo
Cc: Ian Rogers, Jiri Olsa, Adrian Hunter, James Clark, Peter Zijlstra,
Ingo Molnar, LKML, linux-perf-users
To make sure perf trace will see the latest definitions.
Signed-off-by: Namhyung Kim <namhyung@kernel.org>
---
| 1 +
tools/perf/trace/beauty/futex_op.c | 17 +-
tools/perf/trace/beauty/futex_val3.c | 5 +-
.../trace/beauty/include/uapi/linux/futex.h | 212 ++++++++++++++++++
4 files changed, 215 insertions(+), 20 deletions(-)
create mode 100644 tools/perf/trace/beauty/include/uapi/linux/futex.h
--git a/tools/perf/check-headers.sh b/tools/perf/check-headers.sh
index 24660b2bd45e971f..59fe80075c951176 100755
--- a/tools/perf/check-headers.sh
+++ b/tools/perf/check-headers.sh
@@ -94,6 +94,7 @@ declare -a BEAUTY_FILES=(
"include/uapi/linux/fadvise.h"
"include/uapi/linux/fcntl.h"
"include/uapi/linux/fs.h"
+ "include/uapi/linux/futex.h"
"include/uapi/linux/mount.h"
"include/uapi/linux/prctl.h"
"include/uapi/linux/sched.h"
diff --git a/tools/perf/trace/beauty/futex_op.c b/tools/perf/trace/beauty/futex_op.c
index 05d2111e504b8aad..0ff245dffdb432df 100644
--- a/tools/perf/trace/beauty/futex_op.c
+++ b/tools/perf/trace/beauty/futex_op.c
@@ -1,22 +1,7 @@
// SPDX-License-Identifier: LGPL-2.1
#include "trace/beauty/beauty.h"
-#include <linux/futex.h>
+#include "trace/beauty/include/uapi/linux/futex.h"
-#ifndef FUTEX_WAIT_BITSET
-#define FUTEX_WAIT_BITSET 9
-#endif
-#ifndef FUTEX_WAKE_BITSET
-#define FUTEX_WAKE_BITSET 10
-#endif
-#ifndef FUTEX_WAIT_REQUEUE_PI
-#define FUTEX_WAIT_REQUEUE_PI 11
-#endif
-#ifndef FUTEX_CMP_REQUEUE_PI
-#define FUTEX_CMP_REQUEUE_PI 12
-#endif
-#ifndef FUTEX_CLOCK_REALTIME
-#define FUTEX_CLOCK_REALTIME 256
-#endif
size_t syscall_arg__scnprintf_futex_op(char *bf, size_t size, struct syscall_arg *arg)
{
diff --git a/tools/perf/trace/beauty/futex_val3.c b/tools/perf/trace/beauty/futex_val3.c
index fe4e82741ffc1c8c..848c544ea8f686c0 100644
--- a/tools/perf/trace/beauty/futex_val3.c
+++ b/tools/perf/trace/beauty/futex_val3.c
@@ -1,10 +1,7 @@
// SPDX-License-Identifier: LGPL-2.1
#include "trace/beauty/beauty.h"
-#include <linux/futex.h>
+#include "trace/beauty/include/uapi/linux/futex.h"
-#ifndef FUTEX_BITSET_MATCH_ANY
-#define FUTEX_BITSET_MATCH_ANY 0xffffffff
-#endif
size_t syscall_arg__scnprintf_futex_val3(char *bf, size_t size, struct syscall_arg *arg)
{
diff --git a/tools/perf/trace/beauty/include/uapi/linux/futex.h b/tools/perf/trace/beauty/include/uapi/linux/futex.h
new file mode 100644
index 0000000000000000..7e2744ec89336a26
--- /dev/null
+++ b/tools/perf/trace/beauty/include/uapi/linux/futex.h
@@ -0,0 +1,212 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
+#ifndef _UAPI_LINUX_FUTEX_H
+#define _UAPI_LINUX_FUTEX_H
+
+#include <linux/compiler.h>
+#include <linux/types.h>
+
+/* Second argument to futex syscall */
+
+
+#define FUTEX_WAIT 0
+#define FUTEX_WAKE 1
+#define FUTEX_FD 2
+#define FUTEX_REQUEUE 3
+#define FUTEX_CMP_REQUEUE 4
+#define FUTEX_WAKE_OP 5
+#define FUTEX_LOCK_PI 6
+#define FUTEX_UNLOCK_PI 7
+#define FUTEX_TRYLOCK_PI 8
+#define FUTEX_WAIT_BITSET 9
+#define FUTEX_WAKE_BITSET 10
+#define FUTEX_WAIT_REQUEUE_PI 11
+#define FUTEX_CMP_REQUEUE_PI 12
+#define FUTEX_LOCK_PI2 13
+
+#define FUTEX_PRIVATE_FLAG 128
+#define FUTEX_CLOCK_REALTIME 256
+#define FUTEX_CMD_MASK ~(FUTEX_PRIVATE_FLAG | FUTEX_CLOCK_REALTIME)
+
+#define FUTEX_WAIT_PRIVATE (FUTEX_WAIT | FUTEX_PRIVATE_FLAG)
+#define FUTEX_WAKE_PRIVATE (FUTEX_WAKE | FUTEX_PRIVATE_FLAG)
+#define FUTEX_REQUEUE_PRIVATE (FUTEX_REQUEUE | FUTEX_PRIVATE_FLAG)
+#define FUTEX_CMP_REQUEUE_PRIVATE (FUTEX_CMP_REQUEUE | FUTEX_PRIVATE_FLAG)
+#define FUTEX_WAKE_OP_PRIVATE (FUTEX_WAKE_OP | FUTEX_PRIVATE_FLAG)
+#define FUTEX_LOCK_PI_PRIVATE (FUTEX_LOCK_PI | FUTEX_PRIVATE_FLAG)
+#define FUTEX_LOCK_PI2_PRIVATE (FUTEX_LOCK_PI2 | FUTEX_PRIVATE_FLAG)
+#define FUTEX_UNLOCK_PI_PRIVATE (FUTEX_UNLOCK_PI | FUTEX_PRIVATE_FLAG)
+#define FUTEX_TRYLOCK_PI_PRIVATE (FUTEX_TRYLOCK_PI | FUTEX_PRIVATE_FLAG)
+#define FUTEX_WAIT_BITSET_PRIVATE (FUTEX_WAIT_BITSET | FUTEX_PRIVATE_FLAG)
+#define FUTEX_WAKE_BITSET_PRIVATE (FUTEX_WAKE_BITSET | FUTEX_PRIVATE_FLAG)
+#define FUTEX_WAIT_REQUEUE_PI_PRIVATE (FUTEX_WAIT_REQUEUE_PI | \
+ FUTEX_PRIVATE_FLAG)
+#define FUTEX_CMP_REQUEUE_PI_PRIVATE (FUTEX_CMP_REQUEUE_PI | \
+ FUTEX_PRIVATE_FLAG)
+
+/*
+ * Flags for futex2 syscalls.
+ *
+ * NOTE: these are not pure flags, they can also be seen as:
+ *
+ * union {
+ * u32 flags;
+ * struct {
+ * u32 size : 2,
+ * numa : 1,
+ * : 4,
+ * private : 1;
+ * };
+ * };
+ */
+#define FUTEX2_SIZE_U8 0x00
+#define FUTEX2_SIZE_U16 0x01
+#define FUTEX2_SIZE_U32 0x02
+#define FUTEX2_SIZE_U64 0x03
+#define FUTEX2_NUMA 0x04
+#define FUTEX2_MPOL 0x08
+ /* 0x10 */
+ /* 0x20 */
+ /* 0x40 */
+#define FUTEX2_PRIVATE FUTEX_PRIVATE_FLAG
+
+#define FUTEX2_SIZE_MASK 0x03
+
+/* do not use */
+#define FUTEX_32 FUTEX2_SIZE_U32 /* historical accident :-( */
+
+/*
+ * When FUTEX2_NUMA doubles the futex word, the second word is a node value.
+ * The special value -1 indicates no-node. This is the same value as
+ * NUMA_NO_NODE, except that value is not ABI, this is.
+ */
+#define FUTEX_NO_NODE (-1)
+
+/*
+ * Max numbers of elements in a futex_waitv array
+ */
+#define FUTEX_WAITV_MAX 128
+
+/**
+ * struct futex_waitv - A waiter for vectorized wait
+ * @val: Expected value at uaddr
+ * @uaddr: User address to wait on
+ * @flags: Flags for this waiter
+ * @__reserved: Reserved member to preserve data alignment. Should be 0.
+ */
+struct futex_waitv {
+ __u64 val;
+ __u64 uaddr;
+ __u32 flags;
+ __u32 __reserved;
+};
+
+/*
+ * Support for robust futexes: the kernel cleans up held futexes at
+ * thread exit time.
+ */
+
+/*
+ * Per-lock list entry - embedded in user-space locks, somewhere close
+ * to the futex field. (Note: user-space uses a double-linked list to
+ * achieve O(1) list add and remove, but the kernel only needs to know
+ * about the forward link)
+ *
+ * NOTE: this structure is part of the syscall ABI, and must not be
+ * changed.
+ */
+struct robust_list {
+ struct robust_list __user *next;
+};
+
+/*
+ * Per-thread list head:
+ *
+ * NOTE: this structure is part of the syscall ABI, and must only be
+ * changed if the change is first communicated with the glibc folks.
+ * (When an incompatible change is done, we'll increase the structure
+ * size, which glibc will detect)
+ */
+struct robust_list_head {
+ /*
+ * The head of the list. Points back to itself if empty:
+ */
+ struct robust_list list;
+
+ /*
+ * This relative offset is set by user-space, it gives the kernel
+ * the relative position of the futex field to examine. This way
+ * we keep userspace flexible, to freely shape its data-structure,
+ * without hardcoding any particular offset into the kernel:
+ */
+ long futex_offset;
+
+ /*
+ * The death of the thread may race with userspace setting
+ * up a lock's links. So to handle this race, userspace first
+ * sets this field to the address of the to-be-taken lock,
+ * then does the lock acquire, and then adds itself to the
+ * list, and then clears this field. Hence the kernel will
+ * always have full knowledge of all locks that the thread
+ * _might_ have taken. We check the owner TID in any case,
+ * so only truly owned locks will be handled.
+ */
+ struct robust_list __user *list_op_pending;
+};
+
+/*
+ * Are there any waiters for this robust futex:
+ */
+#define FUTEX_WAITERS 0x80000000
+
+/*
+ * The kernel signals via this bit that a thread holding a futex
+ * has exited without unlocking the futex. The kernel also does
+ * a FUTEX_WAKE on such futexes, after setting the bit, to wake
+ * up any possible waiters:
+ */
+#define FUTEX_OWNER_DIED 0x40000000
+
+/*
+ * The rest of the robust-futex field is for the TID:
+ */
+#define FUTEX_TID_MASK 0x3fffffff
+
+/*
+ * This limit protects against a deliberately circular list.
+ * (Not worth introducing an rlimit for it)
+ */
+#define ROBUST_LIST_LIMIT 2048
+
+/*
+ * bitset with all bits set for the FUTEX_xxx_BITSET OPs to request a
+ * match of any bit.
+ */
+#define FUTEX_BITSET_MATCH_ANY 0xffffffff
+
+
+#define FUTEX_OP_SET 0 /* *(int *)UADDR2 = OPARG; */
+#define FUTEX_OP_ADD 1 /* *(int *)UADDR2 += OPARG; */
+#define FUTEX_OP_OR 2 /* *(int *)UADDR2 |= OPARG; */
+#define FUTEX_OP_ANDN 3 /* *(int *)UADDR2 &= ~OPARG; */
+#define FUTEX_OP_XOR 4 /* *(int *)UADDR2 ^= OPARG; */
+
+#define FUTEX_OP_OPARG_SHIFT 8 /* Use (1 << OPARG) instead of OPARG. */
+
+#define FUTEX_OP_CMP_EQ 0 /* if (oldval == CMPARG) wake */
+#define FUTEX_OP_CMP_NE 1 /* if (oldval != CMPARG) wake */
+#define FUTEX_OP_CMP_LT 2 /* if (oldval < CMPARG) wake */
+#define FUTEX_OP_CMP_LE 3 /* if (oldval <= CMPARG) wake */
+#define FUTEX_OP_CMP_GT 4 /* if (oldval > CMPARG) wake */
+#define FUTEX_OP_CMP_GE 5 /* if (oldval >= CMPARG) wake */
+
+/* FUTEX_WAKE_OP will perform atomically
+ int oldval = *(int *)UADDR2;
+ *(int *)UADDR2 = oldval OP OPARG;
+ if (oldval CMP CMPARG)
+ wake UADDR2; */
+
+#define FUTEX_OP(op, oparg, cmp, cmparg) \
+ (((op & 0xf) << 28) | ((cmp & 0xf) << 24) \
+ | ((oparg & 0xfff) << 12) | (cmparg & 0xfff))
+
+#endif /* _UAPI_LINUX_FUTEX_H */
--
2.54.0.746.g67dd491aae-goog
^ permalink raw reply related [flat|nested] 7+ messages in thread* Re: [PATCH 1/3] perf trace: Include copied headers in the beauty directory
2026-05-25 1:11 [PATCH 1/3] perf trace: Include copied headers in the beauty directory Namhyung Kim
2026-05-25 1:11 ` [PATCH 2/3] perf trace: Copy uapi/linux/eventfd.h for beautifier Namhyung Kim
2026-05-25 1:11 ` [PATCH 3/3] perf trace: Copy uapi/linux/futex.h " Namhyung Kim
@ 2026-05-25 1:31 ` sashiko-bot
2026-05-25 15:45 ` Arnaldo Carvalho de Melo
2026-05-25 11:46 ` Arnaldo Carvalho de Melo
3 siblings, 1 reply; 7+ messages in thread
From: sashiko-bot @ 2026-05-25 1:31 UTC (permalink / raw)
To: Namhyung Kim; +Cc: linux-perf-users
Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider:
- [Low] The copied UAPI header `fcntl.h` includes `<linux/openat2.h>`, which was not copied into the `tools/include/uapi/linux/` directory, causing build failures on older host systems.
--
commit 7bb011deeef80e2496028a3477432fac108a240f
Author: Namhyung Kim <namhyung@kernel.org>
perf trace: Include copied headers in the beauty directory
This commit updates the trace beauty scripts to use local copies of UAPI
kernel headers directly, rather than relying on system headers or manual
macro definitions.
> diff --git a/tools/perf/trace/beauty/fcntl.c b/tools/perf/trace/beauty/fcntl.c
> index e1b99b8f55eb0..10fd6a2b75c35 100644
> --- a/tools/perf/trace/beauty/fcntl.c
> +++ b/tools/perf/trace/beauty/fcntl.c
[ ... ]
> -#include "trace/beauty/beauty.h"
> #include <linux/kernel.h>
> -#include <linux/fcntl.h>
[ ... ]
> +#include "trace/beauty/beauty.h"
> +#include "trace/beauty/include/uapi/linux/fcntl.h"
[Severity: Low]
Will this cause a build failure on systems with older kernel headers?
The newly copied uapi/linux/fcntl.h includes <linux/openat2.h>, but it
appears openat2.h was not copied into the tools directory. On build
environments with kernel headers older than v5.6, the compiler will fall
back to the host system's include paths, fail to find linux/openat2.h,
and halt the build.
Should linux/openat2.h also be copied into the tools include directory to
prevent this?
--
Sashiko AI review · https://sashiko.dev/#/patchset/20260525011133.179130-1-namhyung@kernel.org?part=1
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH 1/3] perf trace: Include copied headers in the beauty directory
2026-05-25 1:31 ` [PATCH 1/3] perf trace: Include copied headers in the beauty directory sashiko-bot
@ 2026-05-25 15:45 ` Arnaldo Carvalho de Melo
0 siblings, 0 replies; 7+ messages in thread
From: Arnaldo Carvalho de Melo @ 2026-05-25 15:45 UTC (permalink / raw)
To: sashiko-reviews; +Cc: Namhyung Kim, linux-perf-users
On Mon, May 25, 2026 at 01:31:29AM +0000, sashiko-bot@kernel.org wrote:
> Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider:
> - [Low] The copied UAPI header `fcntl.h` includes `<linux/openat2.h>`, which was not copied into the `tools/include/uapi/linux/` directory, causing build failures on older host systems.
> --
>
> commit 7bb011deeef80e2496028a3477432fac108a240f
> Author: Namhyung Kim <namhyung@kernel.org>
>
> perf trace: Include copied headers in the beauty directory
>
> This commit updates the trace beauty scripts to use local copies of UAPI
> kernel headers directly, rather than relying on system headers or manual
> macro definitions.
>
> > diff --git a/tools/perf/trace/beauty/fcntl.c b/tools/perf/trace/beauty/fcntl.c
> > index e1b99b8f55eb0..10fd6a2b75c35 100644
> > --- a/tools/perf/trace/beauty/fcntl.c
> > +++ b/tools/perf/trace/beauty/fcntl.c
> [ ... ]
> > -#include "trace/beauty/beauty.h"
> > #include <linux/kernel.h>
> > -#include <linux/fcntl.h>
> [ ... ]
> > +#include "trace/beauty/beauty.h"
> > +#include "trace/beauty/include/uapi/linux/fcntl.h"
>
> [Severity: Low]
> Will this cause a build failure on systems with older kernel headers?
>
> The newly copied uapi/linux/fcntl.h includes <linux/openat2.h>, but it
> appears openat2.h was not copied into the tools directory. On build
> environments with kernel headers older than v5.6, the compiler will fall
> back to the host system's include paths, fail to find linux/openat2.h,
> and halt the build.
>
> Should linux/openat2.h also be copied into the tools include directory to
> prevent this?
So, this is exactly the kind of dependencies I mentioned in my reply to
you :-)
- Arnaldo
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH 1/3] perf trace: Include copied headers in the beauty directory
2026-05-25 1:11 [PATCH 1/3] perf trace: Include copied headers in the beauty directory Namhyung Kim
` (2 preceding siblings ...)
2026-05-25 1:31 ` [PATCH 1/3] perf trace: Include copied headers in the beauty directory sashiko-bot
@ 2026-05-25 11:46 ` Arnaldo Carvalho de Melo
2026-05-26 0:14 ` Namhyung Kim
3 siblings, 1 reply; 7+ messages in thread
From: Arnaldo Carvalho de Melo @ 2026-05-25 11:46 UTC (permalink / raw)
To: Namhyung Kim
Cc: Ian Rogers, Jiri Olsa, Adrian Hunter, James Clark, Peter Zijlstra,
Ingo Molnar, LKML, linux-perf-users
On Sun, May 24, 2026 at 06:11:31PM -0700, Namhyung Kim wrote:
> We keep uptodate copied of the kernel headers, let's use it directly and
> don't worry about missing definitions.
Using it directly with the latest header, when reasonable, is indeed
better than having those conditional defines.
Sometimes it is warranted as having the latest headers may involve
dragging many files (header dependencies) into the tools/include/ copy
of kernel headers we try to keep in sync.
> +++ b/tools/perf/trace/beauty/fcntl.c
> @@ -5,25 +5,10 @@
> * Copyright (C) 2017, Red Hat Inc, Arnaldo Carvalho de Melo <acme@redhat.com>
> */
<SNIP>
> -#ifndef F_GET_FILE_RW_HINT
> -#define F_GET_FILE_RW_HINT (F_LINUX_SPECIFIC_BASE + 13)
> -#endif
> +#include "trace/beauty/beauty.h"
> +#include "trace/beauty/include/uapi/linux/fcntl.h"
The intention isn't documented anywhere, but files in
trace/beauty/include/uapi were not intended to be used in compiling,
just scraping, i.e. it didn't need to be compileable, no need to have
things it includes in turn nor have defines in Makefiles, it would just
be used by the scripts to extract info from it, info that otherwise
isn't available as enums (which they should, but that is a digression)
or as BTF (which would be even better).
Things for compiling would remain in tools/include/, as other tools may
need them and then the maintainainace of these headers would be shared
to some degree.
Otherwise each and every tools/ living code that needed copies of header
files would end up with its own copy, which seems excessive.
What do you think?
- Arnaldo
> -#ifndef F_SET_FILE_RW_HINT
> -#define F_SET_FILE_RW_HINT (F_LINUX_SPECIFIC_BASE + 14)
> -#endif
^ permalink raw reply [flat|nested] 7+ messages in thread* Re: [PATCH 1/3] perf trace: Include copied headers in the beauty directory
2026-05-25 11:46 ` Arnaldo Carvalho de Melo
@ 2026-05-26 0:14 ` Namhyung Kim
0 siblings, 0 replies; 7+ messages in thread
From: Namhyung Kim @ 2026-05-26 0:14 UTC (permalink / raw)
To: Arnaldo Carvalho de Melo
Cc: Ian Rogers, Jiri Olsa, Adrian Hunter, James Clark, Peter Zijlstra,
Ingo Molnar, LKML, linux-perf-users
On Mon, May 25, 2026 at 08:46:18AM -0300, Arnaldo Carvalho de Melo wrote:
> On Sun, May 24, 2026 at 06:11:31PM -0700, Namhyung Kim wrote:
> > We keep uptodate copied of the kernel headers, let's use it directly and
> > don't worry about missing definitions.
>
> Using it directly with the latest header, when reasonable, is indeed
> better than having those conditional defines.
>
> Sometimes it is warranted as having the latest headers may involve
> dragging many files (header dependencies) into the tools/include/ copy
> of kernel headers we try to keep in sync.
>
> > +++ b/tools/perf/trace/beauty/fcntl.c
> > @@ -5,25 +5,10 @@
> > * Copyright (C) 2017, Red Hat Inc, Arnaldo Carvalho de Melo <acme@redhat.com>
> > */
>
> <SNIP>
>
> > -#ifndef F_GET_FILE_RW_HINT
> > -#define F_GET_FILE_RW_HINT (F_LINUX_SPECIFIC_BASE + 13)
> > -#endif
> > +#include "trace/beauty/beauty.h"
> > +#include "trace/beauty/include/uapi/linux/fcntl.h"
>
> The intention isn't documented anywhere, but files in
> trace/beauty/include/uapi were not intended to be used in compiling,
> just scraping, i.e. it didn't need to be compileable, no need to have
> things it includes in turn nor have defines in Makefiles, it would just
> be used by the scripts to extract info from it, info that otherwise
> isn't available as enums (which they should, but that is a digression)
> or as BTF (which would be even better).
>
> Things for compiling would remain in tools/include/, as other tools may
> need them and then the maintainainace of these headers would be shared
> to some degree.
>
> Otherwise each and every tools/ living code that needed copies of header
> files would end up with its own copy, which seems excessive.
>
> What do you think?
Yep, makes sense. I'll try to find a way to use them without including.
Thanks,
Namhyung
^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2026-05-26 0:14 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-05-25 1:11 [PATCH 1/3] perf trace: Include copied headers in the beauty directory Namhyung Kim
2026-05-25 1:11 ` [PATCH 2/3] perf trace: Copy uapi/linux/eventfd.h for beautifier Namhyung Kim
2026-05-25 1:11 ` [PATCH 3/3] perf trace: Copy uapi/linux/futex.h " Namhyung Kim
2026-05-25 1:31 ` [PATCH 1/3] perf trace: Include copied headers in the beauty directory sashiko-bot
2026-05-25 15:45 ` Arnaldo Carvalho de Melo
2026-05-25 11:46 ` Arnaldo Carvalho de Melo
2026-05-26 0:14 ` Namhyung Kim
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox