1 // SPDX-License-Identifier: GPL-2.0-only 2 3 #define __printf(a, b) __attribute__((format(printf, a, b))) 4 5 #include <stdio.h> 6 #include <stdarg.h> 7 #include <unistd.h> 8 #include <linux/compiler.h> 9 #include <perf/core.h> 10 #include <internal/lib.h> 11 #include "internal.h" 12 13 static int __base_pr(enum libperf_print_level level __maybe_unused, const char *format, 14 va_list args) 15 { 16 return vfprintf(stderr, format, args); 17 } 18 19 static libperf_print_fn_t __libperf_pr = __base_pr; 20 21 __printf(2, 3) 22 void libperf_print(enum libperf_print_level level, const char *format, ...) 23 { 24 va_list args; 25 26 if (!__libperf_pr) 27 return; 28 29 va_start(args, format); 30 __libperf_pr(level, format, args); 31 va_end(args); 32 } 33 34 void libperf_init(libperf_print_fn_t fn) 35 { 36 page_size = sysconf(_SC_PAGE_SIZE); 37 __libperf_pr = fn; 38 } 39