]> asedeno.scripts.mit.edu Git - linux.git/commitdiff
libbpf: return previous print callback from libbpf_set_print
authorAndrii Nakryiko <andriin@fb.com>
Sun, 28 Jul 2019 03:25:26 +0000 (20:25 -0700)
committerAlexei Starovoitov <ast@kernel.org>
Sun, 28 Jul 2019 05:36:19 +0000 (22:36 -0700)
By returning previously set print callback from libbpf_set_print, it's
possible to restore it, eventually. This is useful when running many
independent test with one default print function, but overriding log
verbosity for particular subset of tests.

Signed-off-by: Andrii Nakryiko <andriin@fb.com>
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
tools/lib/bpf/libbpf.c
tools/lib/bpf/libbpf.h

index 8741c39adb1c20c40b55ac645e14eaaf364e85c8..ead915aec349e7f960b3907b27eb161c2dd99230 100644 (file)
@@ -74,9 +74,12 @@ static int __base_pr(enum libbpf_print_level level, const char *format,
 
 static libbpf_print_fn_t __libbpf_pr = __base_pr;
 
-void libbpf_set_print(libbpf_print_fn_t fn)
+libbpf_print_fn_t libbpf_set_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)
index 5cbf459ece0b29eb3e36981d0b3cfe5a951ae562..8a9d462a6f6db357c923432fdd860ff77141873a 100644 (file)
@@ -57,7 +57,7 @@ enum libbpf_print_level {
 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_set_print(libbpf_print_fn_t fn);
 
 /* Hide internal to user */
 struct bpf_object;