Back to home page

OSCL-LXR

 
 

    


0001 /* SPDX-License-Identifier: GPL-2.0 */
0002 /* For debugging general purposes */
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 /* Special macro to print perf_event_open arguments/return value. */
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 /* For the buffer size of str_error_r */
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  /* __PERF_DEBUG_H */