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