Message ID | 20210902171929.3922667-6-davemarchevsky@fb.com (mailing list archive) |
---|---|
State | Superseded |
Delegated to: | BPF |
Headers | show |
Series | bpf: implement variadic printk helper | expand |
Context | Check | Description |
---|---|---|
bpf/vmtest-bpf-next | fail | VM_Test |
bpf/vmtest-bpf-next-PR | fail | PR summary |
netdev/cover_letter | success | Link |
netdev/fixes_present | success | Link |
netdev/patch_count | success | Link |
netdev/tree_selection | success | Clearly marked for bpf-next |
netdev/subject_prefix | success | Link |
netdev/cc_maintainers | warning | 4 maintainers not CCed: songliubraving@fb.com kpsingh@kernel.org kafai@fb.com john.fastabend@gmail.com |
netdev/source_inline | success | Was 0 now: 0 |
netdev/verify_signedoff | success | Link |
netdev/module_param | success | Was 0 now: 0 |
netdev/build_32bit | success | Errors and warnings before: 0 this patch: 0 |
netdev/kdoc | success | Errors and warnings before: 0 this patch: 0 |
netdev/verify_fixes | success | Link |
netdev/checkpatch | fail | ERROR: Macros with complex values should be enclosed in parentheses |
netdev/build_allmodconfig_warn | success | Errors and warnings before: 0 this patch: 0 |
netdev/header_inline | success | Link |
On Thu, Sep 2, 2021 at 10:23 AM Dave Marchevsky <davemarchevsky@fb.com> wrote: > > The __bpf_printk convenience macro was using a 'char' fmt string holder > as it predates support for globals in libbpf. Move to more efficient > 'static const char', but provide a fallback to the old way via > BPF_NO_GLOBAL_DATA so users on old kernels can still use the macro. > > Signed-off-by: Dave Marchevsky <davemarchevsky@fb.com> > --- Great, thanks! Acked-by: Andrii Nakryiko <andrii@kernel.org> > tools/lib/bpf/bpf_helpers.h | 8 +++++++- > 1 file changed, 7 insertions(+), 1 deletion(-) > > diff --git a/tools/lib/bpf/bpf_helpers.h b/tools/lib/bpf/bpf_helpers.h > index a7e73be6dac4..7df7d9a23099 100644 > --- a/tools/lib/bpf/bpf_helpers.h > +++ b/tools/lib/bpf/bpf_helpers.h > @@ -216,10 +216,16 @@ enum libbpf_tristate { > ___param, sizeof(___param)); \ > }) > > +#ifdef BPF_NO_GLOBAL_DATA > +#define BPF_PRINTK_FMT_MOD > +#else > +#define BPF_PRINTK_FMT_MOD static const > +#endif > + > /* Helper macro to print out debug messages */ > #define __bpf_printk(fmt, ...) \ > ({ \ > - char ____fmt[] = fmt; \ > + BPF_PRINTK_FMT_MOD char ____fmt[] = fmt; \ > bpf_trace_printk(____fmt, sizeof(____fmt), \ > ##__VA_ARGS__); \ > }) > -- > 2.30.2 >
diff --git a/tools/lib/bpf/bpf_helpers.h b/tools/lib/bpf/bpf_helpers.h index a7e73be6dac4..7df7d9a23099 100644 --- a/tools/lib/bpf/bpf_helpers.h +++ b/tools/lib/bpf/bpf_helpers.h @@ -216,10 +216,16 @@ enum libbpf_tristate { ___param, sizeof(___param)); \ }) +#ifdef BPF_NO_GLOBAL_DATA +#define BPF_PRINTK_FMT_MOD +#else +#define BPF_PRINTK_FMT_MOD static const +#endif + /* Helper macro to print out debug messages */ #define __bpf_printk(fmt, ...) \ ({ \ - char ____fmt[] = fmt; \ + BPF_PRINTK_FMT_MOD char ____fmt[] = fmt; \ bpf_trace_printk(____fmt, sizeof(____fmt), \ ##__VA_ARGS__); \ })
The __bpf_printk convenience macro was using a 'char' fmt string holder as it predates support for globals in libbpf. Move to more efficient 'static const char', but provide a fallback to the old way via BPF_NO_GLOBAL_DATA so users on old kernels can still use the macro. Signed-off-by: Dave Marchevsky <davemarchevsky@fb.com> --- tools/lib/bpf/bpf_helpers.h | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-)