171ad0f5eSJiri Olsa #ifndef __UNWIND_H 271ad0f5eSJiri Olsa #define __UNWIND_H 371ad0f5eSJiri Olsa 471ad0f5eSJiri Olsa #include "types.h" 571ad0f5eSJiri Olsa #include "event.h" 671ad0f5eSJiri Olsa #include "symbol.h" 771ad0f5eSJiri Olsa 871ad0f5eSJiri Olsa struct unwind_entry { 971ad0f5eSJiri Olsa struct map *map; 1071ad0f5eSJiri Olsa struct symbol *sym; 1171ad0f5eSJiri Olsa u64 ip; 1271ad0f5eSJiri Olsa }; 1371ad0f5eSJiri Olsa 1471ad0f5eSJiri Olsa typedef int (*unwind_entry_cb_t)(struct unwind_entry *entry, void *arg); 1571ad0f5eSJiri Olsa 1689fe808aSIngo Molnar #ifdef HAVE_LIBUNWIND_SUPPORT 1771ad0f5eSJiri Olsa int unwind__get_entries(unwind_entry_cb_t cb, void *arg, 1871ad0f5eSJiri Olsa struct machine *machine, 1971ad0f5eSJiri Olsa struct thread *thread, 2071ad0f5eSJiri Olsa u64 sample_uregs, 21*37676af1SArnaldo Carvalho de Melo struct perf_sample *data, int max_stack); 2271ad0f5eSJiri Olsa int unwind__arch_reg_id(int regnum); 2371ad0f5eSJiri Olsa #else 2471ad0f5eSJiri Olsa static inline int 251d037ca1SIrina Tirdea unwind__get_entries(unwind_entry_cb_t cb __maybe_unused, 261d037ca1SIrina Tirdea void *arg __maybe_unused, 271d037ca1SIrina Tirdea struct machine *machine __maybe_unused, 281d037ca1SIrina Tirdea struct thread *thread __maybe_unused, 291d037ca1SIrina Tirdea u64 sample_uregs __maybe_unused, 30*37676af1SArnaldo Carvalho de Melo struct perf_sample *data __maybe_unused, 31*37676af1SArnaldo Carvalho de Melo int max_stack __maybe_unused) 3271ad0f5eSJiri Olsa { 3371ad0f5eSJiri Olsa return 0; 3471ad0f5eSJiri Olsa } 3589fe808aSIngo Molnar #endif /* HAVE_LIBUNWIND_SUPPORT */ 3671ad0f5eSJiri Olsa #endif /* __UNWIND_H */ 37