Re: [PATCH bpf-next v3 09/12] libbpf: Add bpf_stream_printk() macro

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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
>





[Index of Archives]     [Linux Samsung SoC]     [Linux Rockchip SoC]     [Linux Actions SoC]     [Linux for Synopsys ARC Processors]     [Linux NFS]     [Linux NILFS]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]


  Powered by Linux