/* * Copyright 2014, Michael Ellerman, IBM Corp. * Licensed under GPLv2. */ #ifndef _SELFTESTS_POWERPC_PMU_EBB_TRACE_H #define _SELFTESTS_POWERPC_PMU_EBB_TRACE_H #include "utils.h" #define TRACE_TYPE_REG 1 #define TRACE_TYPE_COUNTER 2 #define TRACE_TYPE_STRING 3 #define TRACE_TYPE_INDENT 4 #define TRACE_TYPE_OUTDENT 5 struct trace_entry { u8 type; u8 length; u8 data[0]; }; struct trace_buffer { u64 size; bool overflow; void *tail; u8 data[0]; }; struct trace_buffer *trace_buffer_allocate(u64 size); int trace_log_reg(struct trace_buffer *tb, u64 reg, u64 value); int trace_log_counter(struct trace_buffer *tb, u64 value); int trace_log_string(struct trace_buffer *tb, char *str); int trace_log_indent(struct trace_buffer *tb); int trace_log_outdent(struct trace_buffer *tb); void trace_buffer_print(struct trace_buffer *tb); void trace_print_location(struct trace_buffer *tb); #endif /* _SELFTESTS_POWERPC_PMU_EBB_TRACE_H */