This series covers the changes that were brought up once user_events went into 5.18. The largest change is moving away from byte index to a bit index, as first suggested by Mathieu Desnoyers. The other changes are either fixes that have accumulated or found by Mathieu. NOTE: The sample and self-tests do not build unless you manually install user_events.h into usr/include/linux. Link: https://lore.kernel.org/all/2059213643.196683.1648499088753.JavaMail.zimbra@xxxxxxxxxxxx/ Psuedo code example of typical usage with the new ABI: struct user_reg reg; int page_fd = open("user_events_status", O_RDWR); char *page_data = mmap(NULL, PAGE_SIZE, PROT_READ, MAP_SHARED, page_fd, 0); close(page_fd); int data_fd = open("user_events_data", O_RDWR); reg.size = sizeof(reg); reg.name_args = (__u64)"test"; ioctl(data_fd, DIAG_IOCSREG, ®); int status_id = reg.status_bit / 8; int status_mask = 1 << (reg.status_bit % 8); int write_id = reg.write_index; struct iovec io[2]; io[0].iov_base = &write_id; io[0].iov_len = sizeof(write_id); io[1].iov_base = payload; io[1].iov_len = sizeof(payload); if (page_data[status_id] & status_mask) writev(data_fd, io, 2); V2 Updates: Changed from status_index and status_mask on user_reg to just status_bit. Updated and added byte-wise and long-wise indexing pattern into docs. Updated tests to use byte-wise index pattern. Updated sample to show long-wise index pattern. V3 Updates: Rebase to recent ftrace/core head. Updated comments to show how index/bit to byte is calculated. Changed to BIT() macro vs 1 << X. Beau Belgrave (6): tracing/user_events: Use NULL for strstr checks tracing/user_events: Use WRITE instead of READ for io vector import tracing/user_events: Ensure user provided strings are safely formatted tracing/user_events: Use refcount instead of atomic for ref tracking tracing/user_events: Use bits vs bytes for enabled status page data tracing/user_events: Update ABI documentation to align to bits vs bytes Documentation/trace/user_events.rst | 86 ++++--- include/linux/user_events.h | 15 +- kernel/trace/trace_events_user.c | 228 ++++++++++++------ samples/user_events/example.c | 25 +- .../selftests/user_events/ftrace_test.c | 47 +++- .../testing/selftests/user_events/perf_test.c | 11 +- 6 files changed, 281 insertions(+), 131 deletions(-) base-commit: 26b2da5fc0b41a9a6a5e30b858da28572a6f4cbc -- 2.25.1