This series introduces a new helper, bpf_trace_vprintk, which functions like bpf_trace_printk but supports > 3 arguments via a pseudo-vararg u64 array. A libbpf convienience macro, bpf_vprintk, is added to support true vararg calling style. Helper functions and macros added during the implementation of bpf_seq_printf and bpf_snprintf do most of the heavy lifting for bpf_trace_vprintk. There's no novel format string wrangling here. Usecase here is straightforward: Giving BPF program writers a more powerful printk will ease development of BPF programs, particularly during debugging and testing, where printk tends to be used. Hypothetically libbpf's bpf_printk convenience macro could be modified to use bpf_trace_vprintk under the hood. This patchset does not attempt to do this, though, nor am I confident that it's desired. This feature was proposed by Andrii in libbpf mirror's issue tracker [1]. [1] https://github.com/libbpf/libbpf/issues/315 Dave Marchevsky (5): bpf: merge printk and seq_printf VARARG max macros bpf: add bpf_trace_vprintk helper libbpf: Add bpf_vprintk convenience macro bpftool: only probe trace_vprintk feature in 'full' mode selftests/bpf: add trace_vprintk test prog include/linux/bpf.h | 3 + include/uapi/linux/bpf.h | 23 ++++++ kernel/bpf/core.c | 5 ++ kernel/bpf/helpers.c | 6 +- kernel/trace/bpf_trace.c | 54 ++++++++++++- tools/bpf/bpftool/feature.c | 1 + tools/include/uapi/linux/bpf.h | 23 ++++++ tools/lib/bpf/bpf_helpers.h | 18 +++++ tools/testing/selftests/bpf/Makefile | 3 +- .../selftests/bpf/prog_tests/trace_vprintk.c | 75 +++++++++++++++++++ .../selftests/bpf/progs/trace_vprintk.c | 25 +++++++ tools/testing/selftests/bpf/test_bpftool.py | 22 +++--- 12 files changed, 238 insertions(+), 20 deletions(-) create mode 100644 tools/testing/selftests/bpf/prog_tests/trace_vprintk.c create mode 100644 tools/testing/selftests/bpf/progs/trace_vprintk.c -- 2.30.2