#ifndef __UNWIND_H | |
#define __UNWIND_H | |
#include "types.h" | |
#include "event.h" | |
#include "symbol.h" | |
struct unwind_entry { | |
struct map *map; | |
struct symbol *sym; | |
u64 ip; | |
}; | |
typedef int (*unwind_entry_cb_t)(struct unwind_entry *entry, void *arg); | |
#ifdef LIBUNWIND_SUPPORT | |
int unwind__get_entries(unwind_entry_cb_t cb, void *arg, | |
struct machine *machine, | |
struct thread *thread, | |
u64 sample_uregs, | |
struct perf_sample *data); | |
int unwind__arch_reg_id(int regnum); | |
#else | |
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) | |
{ | |
return 0; | |
} | |
#endif /* LIBUNWIND_SUPPORT */ | |
#endif /* __UNWIND_H */ |