xref: /openbmc/linux/tools/perf/util/unwind.h (revision 71ad0f5e4e361c8bca864c7d09d14b64af6bc2fc)
1*71ad0f5eSJiri Olsa #ifndef __UNWIND_H
2*71ad0f5eSJiri Olsa #define __UNWIND_H
3*71ad0f5eSJiri Olsa 
4*71ad0f5eSJiri Olsa #include "types.h"
5*71ad0f5eSJiri Olsa #include "event.h"
6*71ad0f5eSJiri Olsa #include "symbol.h"
7*71ad0f5eSJiri Olsa 
8*71ad0f5eSJiri Olsa struct unwind_entry {
9*71ad0f5eSJiri Olsa 	struct map	*map;
10*71ad0f5eSJiri Olsa 	struct symbol	*sym;
11*71ad0f5eSJiri Olsa 	u64		ip;
12*71ad0f5eSJiri Olsa };
13*71ad0f5eSJiri Olsa 
14*71ad0f5eSJiri Olsa typedef int (*unwind_entry_cb_t)(struct unwind_entry *entry, void *arg);
15*71ad0f5eSJiri Olsa 
16*71ad0f5eSJiri Olsa #ifndef NO_LIBUNWIND_SUPPORT
17*71ad0f5eSJiri Olsa int unwind__get_entries(unwind_entry_cb_t cb, void *arg,
18*71ad0f5eSJiri Olsa 			struct machine *machine,
19*71ad0f5eSJiri Olsa 			struct thread *thread,
20*71ad0f5eSJiri Olsa 			u64 sample_uregs,
21*71ad0f5eSJiri Olsa 			struct perf_sample *data);
22*71ad0f5eSJiri Olsa int unwind__arch_reg_id(int regnum);
23*71ad0f5eSJiri Olsa #else
24*71ad0f5eSJiri Olsa static inline int
25*71ad0f5eSJiri Olsa unwind__get_entries(unwind_entry_cb_t cb __used, void *arg __used,
26*71ad0f5eSJiri Olsa 		    struct machine *machine __used,
27*71ad0f5eSJiri Olsa 		    struct thread *thread __used,
28*71ad0f5eSJiri Olsa 		    u64 sample_uregs __used,
29*71ad0f5eSJiri Olsa 		    struct perf_sample *data __used)
30*71ad0f5eSJiri Olsa {
31*71ad0f5eSJiri Olsa 	return 0;
32*71ad0f5eSJiri Olsa }
33*71ad0f5eSJiri Olsa #endif /* NO_LIBUNWIND_SUPPORT */
34*71ad0f5eSJiri Olsa #endif /* __UNWIND_H */
35