On 07/26, Andrii Nakryiko wrote: > libbpf_swap_print allows to restore previously set print function. > This is useful when running many independent test with one default print > function, but overriding log verbosity for particular subset of tests. Can we change the return type of libbpf_set_print instead and return the old function from it? Will it break ABI? > Signed-off-by: Andrii Nakryiko <andriin@xxxxxx> > --- > tools/lib/bpf/libbpf.c | 8 ++++++++ > tools/lib/bpf/libbpf.h | 1 + > tools/lib/bpf/libbpf.map | 5 +++++ > 3 files changed, 14 insertions(+) > > diff --git a/tools/lib/bpf/libbpf.c b/tools/lib/bpf/libbpf.c > index 8741c39adb1c..0c254b6c9685 100644 > --- a/tools/lib/bpf/libbpf.c > +++ b/tools/lib/bpf/libbpf.c > @@ -79,6 +79,14 @@ void libbpf_set_print(libbpf_print_fn_t fn) > __libbpf_pr = fn; > } > > +libbpf_print_fn_t libbpf_swap_print(libbpf_print_fn_t fn) > +{ > + libbpf_print_fn_t old_print_fn = __libbpf_pr; > + > + __libbpf_pr = fn; > + return old_print_fn; > +} > + > __printf(2, 3) > void libbpf_print(enum libbpf_print_level level, const char *format, ...) > { > diff --git a/tools/lib/bpf/libbpf.h b/tools/lib/bpf/libbpf.h > index 5cbf459ece0b..4e0aa893571f 100644 > --- a/tools/lib/bpf/libbpf.h > +++ b/tools/lib/bpf/libbpf.h > @@ -58,6 +58,7 @@ typedef int (*libbpf_print_fn_t)(enum libbpf_print_level level, > const char *, va_list ap); > > LIBBPF_API void libbpf_set_print(libbpf_print_fn_t fn); > +LIBBPF_API libbpf_print_fn_t libbpf_swap_print(libbpf_print_fn_t fn); > > /* Hide internal to user */ > struct bpf_object; > diff --git a/tools/lib/bpf/libbpf.map b/tools/lib/bpf/libbpf.map > index f9d316e873d8..e211c38ddc43 100644 > --- a/tools/lib/bpf/libbpf.map > +++ b/tools/lib/bpf/libbpf.map > @@ -184,3 +184,8 @@ LIBBPF_0.0.4 { > perf_buffer__new_raw; > perf_buffer__poll; > } LIBBPF_0.0.3; > + > +LIBBPF_0.0.5 { > + global: > + libbpf_swap_print; > +} LIBBPF_0.0.4; > -- > 2.17.1 >