0001
0002
0003
0004
0005
0006 #ifndef _SELFTESTS_POWERPC_PMU_EBB_TRACE_H
0007 #define _SELFTESTS_POWERPC_PMU_EBB_TRACE_H
0008
0009 #include "utils.h"
0010
0011 #define TRACE_TYPE_REG 1
0012 #define TRACE_TYPE_COUNTER 2
0013 #define TRACE_TYPE_STRING 3
0014 #define TRACE_TYPE_INDENT 4
0015 #define TRACE_TYPE_OUTDENT 5
0016
0017 struct trace_entry
0018 {
0019 u8 type;
0020 u8 length;
0021 u8 data[];
0022 };
0023
0024 struct trace_buffer
0025 {
0026 u64 size;
0027 bool overflow;
0028 void *tail;
0029 u8 data[];
0030 };
0031
0032 struct trace_buffer *trace_buffer_allocate(u64 size);
0033 int trace_log_reg(struct trace_buffer *tb, u64 reg, u64 value);
0034 int trace_log_counter(struct trace_buffer *tb, u64 value);
0035 int trace_log_string(struct trace_buffer *tb, char *str);
0036 int trace_log_indent(struct trace_buffer *tb);
0037 int trace_log_outdent(struct trace_buffer *tb);
0038 void trace_buffer_print(struct trace_buffer *tb);
0039 void trace_print_location(struct trace_buffer *tb);
0040
0041 #endif