On Mon, Jun 23, 2025 at 8:13 PM Kumar Kartikeya Dwivedi <memxor@xxxxxxxxx> wrote: > > Add a convenience macro to print data to the BPF streams. BPF_STDOUT and > BPF_STDERR stream IDs in the vmlinux.h can be passed to the macro to > print to the respective streams. > > Acked-by: Eduard Zingerman <eddyz87@xxxxxxxxx> > Signed-off-by: Kumar Kartikeya Dwivedi <memxor@xxxxxxxxx> > --- > tools/lib/bpf/bpf_helpers.h | 16 ++++++++++++++++ > 1 file changed, 16 insertions(+) > Acked-by: Andrii Nakryiko <andrii@xxxxxxxxxx> > diff --git a/tools/lib/bpf/bpf_helpers.h b/tools/lib/bpf/bpf_helpers.h > index a50773d4616e..76b127a9f24d 100644 > --- a/tools/lib/bpf/bpf_helpers.h > +++ b/tools/lib/bpf/bpf_helpers.h > @@ -314,6 +314,22 @@ enum libbpf_tristate { > ___param, sizeof(___param)); \ > }) > > +extern int bpf_stream_vprintk(int stream_id, const char *fmt__str, const void *args, > + __u32 len__sz, void *aux__prog) __weak __ksym; > + > +#define bpf_stream_printk(stream_id, fmt, args...) \ > +({ \ > + static const char ___fmt[] = fmt; \ > + unsigned long long ___param[___bpf_narg(args)]; \ > + \ > + _Pragma("GCC diagnostic push") \ > + _Pragma("GCC diagnostic ignored \"-Wint-conversion\"") \ > + ___bpf_fill(___param, args); \ > + _Pragma("GCC diagnostic pop") \ > + \ > + bpf_stream_vprintk(stream_id, ___fmt, ___param, sizeof(___param), NULL);\ > +}) > + > /* Use __bpf_printk when bpf_printk call has 3 or fewer fmt args > * Otherwise use __bpf_vprintk > */ > -- > 2.47.1 >