39 lines · c
1// SPDX-License-Identifier: GPL-2.0-only2 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 13static 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 19static libperf_print_fn_t __libperf_pr = __base_pr;20 21__printf(2, 3)22void 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 34void libperf_init(libperf_print_fn_t fn)35{36 page_size = sysconf(_SC_PAGE_SIZE);37 __libperf_pr = fn;38}39