diff options
| author | Paul Buetow <paul@buetow.org> | 2026-05-29 10:13:18 +0300 |
|---|---|---|
| committer | Paul Buetow <paul@buetow.org> | 2026-05-29 10:13:18 +0300 |
| commit | 49b16417d9f52c8ddb48b158b73ccda31fd26982 (patch) | |
| tree | 476c463c6fa86874af4c211f993befb47af04e83 /internal/generate/family_test.go | |
| parent | d0850ae4dd8688f07c67245ce4e30f90e073a9c1 (diff) | |
family: classify futex syscalls as IPC instead of Misc
Audit of futex_wake found that the futex family syscalls (futex,
futex_wait, futex_wake, futex_requeue, futex_waitv) were absent from the
syscallFamilies map and fell through to FamilyMisc. Per futex(2) ("fast
user-space locking"), these are shared-memory synchronization/IPC
primitives, conceptually identical to the System V semaphores
(semop/semget) already tagged FamilyIPC. Group them under IPC so
per-family aggregation/reporting bins them with the other synchronization
primitives.
Argument and return-value handling were already correct: futex_wake's
first arg (uaddr) is a userspace pointer, captured via KindFutex
(null_event), and the exit ret_event records the woken-waiter count
(>=0) or -1 on error.
Add lock-in unit tests in family_test.go and regenerate the C/Go
artifacts (generated_tracepoints.go, generated_types.go).
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Diffstat (limited to 'internal/generate/family_test.go')
| -rw-r--r-- | internal/generate/family_test.go | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/internal/generate/family_test.go b/internal/generate/family_test.go index 3d6f3bb..98deab5 100644 --- a/internal/generate/family_test.go +++ b/internal/generate/family_test.go @@ -19,6 +19,16 @@ func TestClassifySyscallFamily(t *testing.T) { {"sys_enter_epoll_wait", FamilyPolling}, {"sys_enter_io_uring_enter", FamilyAIO}, {"sys_enter_bpf", FamilySecurity}, + // Futexes are shared-memory synchronization/IPC primitives ("fast + // user-space locking", futex(2)); the classic futex() and the Linux + // 6.7+ split syscalls all classify as IPC alongside the System V + // semaphores, not Misc. + {"sys_enter_futex", FamilyIPC}, + {"sys_enter_futex_wait", FamilyIPC}, + {"sys_enter_futex_wake", FamilyIPC}, + {"sys_exit_futex_wake", FamilyIPC}, + {"sys_enter_futex_requeue", FamilyIPC}, + {"sys_enter_futex_waitv", FamilyIPC}, // x86 I/O-port / CPU-state syscalls are not in the explicit family // table and intentionally fall through to Misc (ioperm/iopl/modify_ldt // set port-access or LDT state, not file I/O). arch_prctl/personality |
