libbpf: Use static const fmt string in __bpf_printk
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> Signed-off-by: Alexei Starovoitov <ast@kernel.org> Acked-by: Andrii Nakryiko <andrii@kernel.org> Link: https://lore.kernel.org/bpf/20210917182911.2426606-6-davemarchevsky@fb.com
This commit is contained in:
Родитель
c2758baa97
Коммит
6c66b0e7c9
|
@ -216,9 +216,15 @@ enum libbpf_tristate {
|
||||||
___param, sizeof(___param)); \
|
___param, sizeof(___param)); \
|
||||||
})
|
})
|
||||||
|
|
||||||
|
#ifdef BPF_NO_GLOBAL_DATA
|
||||||
|
#define BPF_PRINTK_FMT_MOD
|
||||||
|
#else
|
||||||
|
#define BPF_PRINTK_FMT_MOD static const
|
||||||
|
#endif
|
||||||
|
|
||||||
#define __bpf_printk(fmt, ...) \
|
#define __bpf_printk(fmt, ...) \
|
||||||
({ \
|
({ \
|
||||||
char ____fmt[] = fmt; \
|
BPF_PRINTK_FMT_MOD char ____fmt[] = fmt; \
|
||||||
bpf_trace_printk(____fmt, sizeof(____fmt), \
|
bpf_trace_printk(____fmt, sizeof(____fmt), \
|
||||||
##__VA_ARGS__); \
|
##__VA_ARGS__); \
|
||||||
})
|
})
|
||||||
|
|
Загрузка…
Ссылка в новой задаче