0001
0002
0003 #define __printf(a, b) __attribute__((format(printf, a, b)))
0004
0005 #include <stdio.h>
0006 #include <stdarg.h>
0007 #include <unistd.h>
0008 #include <linux/compiler.h>
0009 #include <perf/core.h>
0010 #include <internal/lib.h>
0011 #include "internal.h"
0012
0013 static int __base_pr(enum libperf_print_level level __maybe_unused, const char *format,
0014 va_list args)
0015 {
0016 return vfprintf(stderr, format, args);
0017 }
0018
0019 static libperf_print_fn_t __libperf_pr = __base_pr;
0020
0021 __printf(2, 3)
0022 void libperf_print(enum libperf_print_level level, const char *format, ...)
0023 {
0024 va_list args;
0025
0026 if (!__libperf_pr)
0027 return;
0028
0029 va_start(args, format);
0030 __libperf_pr(level, format, args);
0031 va_end(args);
0032 }
0033
0034 void libperf_init(libperf_print_fn_t fn)
0035 {
0036 page_size = sysconf(_SC_PAGE_SIZE);
0037 __libperf_pr = fn;
0038 }