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