mirror of
https://git.proxmox.com/git/mirror_ubuntu-kernels.git
synced 2026-01-07 09:21:50 +00:00
Instead of being a thin wrapper which calls into bpf_trace_printk, libbpf's bpf_printk convenience macro now chooses between bpf_trace_printk and bpf_trace_vprintk. If the arg count (excluding format string) is >3, use bpf_trace_vprintk, otherwise use the older helper. The motivation behind this added complexity - instead of migrating entirely to bpf_trace_vprintk - is to maintain good developer experience for users compiling against new libbpf but running on older kernels. Users who are passing <=3 args to bpf_printk will see no change in their bytecode. __bpf_vprintk functions similarly to BPF_SEQ_PRINTF and BPF_SNPRINTF macros elsewhere in the file - it allows use of bpf_trace_vprintk without manual conversion of varargs to u64 array. Previous implementation of bpf_printk macro is moved to __bpf_printk for use by the new implementation. This does change behavior of bpf_printk calls with >3 args in the "new libbpf, old kernels" scenario. Before this patch, attempting to use 4 args to bpf_printk results in a compile-time error. After this patch, using bpf_printk with 4 args results in a trace_vprintk helper call being emitted and a load-time failure on older kernels. Signed-off-by: Dave Marchevsky <davemarchevsky@fb.com> Signed-off-by: Alexei Starovoitov <ast@kernel.org> Acked-by: Andrii Nakryiko <andrii@kernel.org> Link: https://lore.kernel.org/bpf/20210917182911.2426606-5-davemarchevsky@fb.com |
||
|---|---|---|
| .. | ||
| .gitignore | ||
| bpf_core_read.h | ||
| bpf_endian.h | ||
| bpf_gen_internal.h | ||
| bpf_helpers.h | ||
| bpf_prog_linfo.c | ||
| bpf_tracing.h | ||
| bpf.c | ||
| bpf.h | ||
| btf_dump.c | ||
| btf.c | ||
| btf.h | ||
| Build | ||
| gen_loader.c | ||
| hashmap.c | ||
| hashmap.h | ||
| libbpf_common.h | ||
| libbpf_errno.c | ||
| libbpf_internal.h | ||
| libbpf_legacy.h | ||
| libbpf_probes.c | ||
| libbpf_version.h | ||
| libbpf.c | ||
| libbpf.h | ||
| libbpf.map | ||
| libbpf.pc.template | ||
| linker.c | ||
| Makefile | ||
| netlink.c | ||
| nlattr.c | ||
| nlattr.h | ||
| relo_core.c | ||
| relo_core.h | ||
| ringbuf.c | ||
| skel_internal.h | ||
| str_error.c | ||
| str_error.h | ||
| strset.c | ||
| strset.h | ||
| xsk.c | ||
| xsk.h | ||