0001
0002
0003 #ifndef __PERF_DEBUG_H
0004 #define __PERF_DEBUG_H
0005
0006 #include <stdarg.h>
0007 #include <stdbool.h>
0008 #include <stdio.h>
0009 #include <linux/compiler.h>
0010
0011 extern int verbose;
0012 extern int debug_peo_args;
0013 extern bool quiet, dump_trace;
0014 extern int debug_ordered_events;
0015 extern int debug_data_convert;
0016
0017 #ifndef pr_fmt
0018 #define pr_fmt(fmt) fmt
0019 #endif
0020
0021 #define pr_err(fmt, ...) \
0022 eprintf(0, verbose, pr_fmt(fmt), ##__VA_ARGS__)
0023 #define pr_warning(fmt, ...) \
0024 eprintf(0, verbose, pr_fmt(fmt), ##__VA_ARGS__)
0025 #define pr_warning_once(fmt, ...) ({ \
0026 static int __warned; \
0027 if (unlikely(!__warned)) { \
0028 pr_warning(fmt, ##__VA_ARGS__); \
0029 __warned = 1; \
0030 } \
0031 })
0032 #define pr_info(fmt, ...) \
0033 eprintf(0, verbose, pr_fmt(fmt), ##__VA_ARGS__)
0034 #define pr_debug(fmt, ...) \
0035 eprintf(1, verbose, pr_fmt(fmt), ##__VA_ARGS__)
0036 #define pr_debugN(n, fmt, ...) \
0037 eprintf(n, verbose, pr_fmt(fmt), ##__VA_ARGS__)
0038 #define pr_debug2(fmt, ...) pr_debugN(2, pr_fmt(fmt), ##__VA_ARGS__)
0039 #define pr_debug3(fmt, ...) pr_debugN(3, pr_fmt(fmt), ##__VA_ARGS__)
0040 #define pr_debug4(fmt, ...) pr_debugN(4, pr_fmt(fmt), ##__VA_ARGS__)
0041
0042
0043 #define pr_debug2_peo(fmt, ...) { \
0044 if (debug_peo_args) \
0045 pr_debugN(0, pr_fmt(fmt), ##__VA_ARGS__); \
0046 else \
0047 pr_debugN(2, pr_fmt(fmt), ##__VA_ARGS__); \
0048 }
0049
0050 #define pr_time_N(n, var, t, fmt, ...) \
0051 eprintf_time(n, var, t, fmt, ##__VA_ARGS__)
0052
0053 #define pr_oe_time(t, fmt, ...) pr_time_N(1, debug_ordered_events, t, pr_fmt(fmt), ##__VA_ARGS__)
0054 #define pr_oe_time2(t, fmt, ...) pr_time_N(2, debug_ordered_events, t, pr_fmt(fmt), ##__VA_ARGS__)
0055
0056 #define STRERR_BUFSIZE 128
0057
0058 union perf_event;
0059
0060 int dump_printf(const char *fmt, ...) __printf(1, 2);
0061 void trace_event(union perf_event *event);
0062
0063 int ui__error(const char *format, ...) __printf(1, 2);
0064 int ui__warning(const char *format, ...) __printf(1, 2);
0065 #define ui__warning_once(format, ...) ({ \
0066 static int __warned; \
0067 if (unlikely(!__warned)) { \
0068 ui__warning(format, ##__VA_ARGS__); \
0069 __warned = 1; \
0070 } \
0071 })
0072
0073 void pr_stat(const char *fmt, ...);
0074
0075 int eprintf(int level, int var, const char *fmt, ...) __printf(3, 4);
0076 int eprintf_time(int level, int var, u64 t, const char *fmt, ...) __printf(4, 5);
0077 int veprintf(int level, int var, const char *fmt, va_list args);
0078
0079 int perf_debug_option(const char *str);
0080 void debug_set_file(FILE *file);
0081 void debug_set_display_time(bool set);
0082 void perf_debug_setup(void);
0083 int perf_quiet_option(void);
0084
0085 void dump_stack(void);
0086 void sighandler_dump_stack(int sig);
0087
0088 #endif