cregit-Linux how code gets into the kernel

Release 4.11 tools/perf/util/unwind.h

Directory: tools/perf/util
#ifndef __UNWIND_H

#define __UNWIND_H

#include <linux/types.h>
#include "event.h"
#include "symbol.h"
#include "thread.h"


struct unwind_entry {
	
struct map	*map;
	
struct symbol	*sym;
	
u64		ip;
};


typedef int (*unwind_entry_cb_t)(struct unwind_entry *entry, void *arg);


struct unwind_libunwind_ops {
	
int (*prepare_access)(struct thread *thread);
	
void (*flush_access)(struct thread *thread);
	
void (*finish_access)(struct thread *thread);
	
int (*get_entries)(unwind_entry_cb_t cb, void *arg,
			   struct thread *thread,
			   struct perf_sample *data, int max_stack);
};

#ifdef HAVE_DWARF_UNWIND_SUPPORT
int unwind__get_entries(unwind_entry_cb_t cb, void *arg,
			struct thread *thread,
			struct perf_sample *data, int max_stack);
/* libunwind specific */
#ifdef HAVE_LIBUNWIND_SUPPORT
#ifndef LIBUNWIND__ARCH_REG_ID

#define LIBUNWIND__ARCH_REG_ID(regnum) libunwind__arch_reg_id(regnum)
#endif

#ifndef LIBUNWIND__ARCH_REG_SP

#define LIBUNWIND__ARCH_REG_SP PERF_REG_SP
#endif

#ifndef LIBUNWIND__ARCH_REG_IP

#define LIBUNWIND__ARCH_REG_IP PERF_REG_IP
#endif

int LIBUNWIND__ARCH_REG_ID(int regnum);
int unwind__prepare_access(struct thread *thread, struct map *map,
			   bool *initialized);
void unwind__flush_access(struct thread *thread);
void unwind__finish_access(struct thread *thread);
#else

static inline int unwind__prepare_access(struct thread *thread __maybe_unused, struct map *map __maybe_unused, bool *initialized __maybe_unused) { return 0; }

Contributors

PersonTokensPropCommitsCommitProp
Namhyung Kim1659.26%133.33%
He Kuang622.22%133.33%
Jiri Olsa518.52%133.33%
Total27100.00%3100.00%


static inline void unwind__flush_access(struct thread *thread __maybe_unused) {}

Contributors

PersonTokensPropCommitsCommitProp
Namhyung Kim12100.00%1100.00%
Total12100.00%1100.00%


static inline void unwind__finish_access(struct thread *thread __maybe_unused) {}

Contributors

PersonTokensPropCommitsCommitProp
Namhyung Kim12100.00%1100.00%
Total12100.00%1100.00%

#endif #else
static inline int unwind__get_entries(unwind_entry_cb_t cb __maybe_unused, void *arg __maybe_unused, struct thread *thread __maybe_unused, struct perf_sample *data __maybe_unused, int max_stack __maybe_unused) { return 0; }

Contributors

PersonTokensPropCommitsCommitProp
Jiri Olsa2777.14%133.33%
Arnaldo Carvalho de Melo411.43%133.33%
Irina Tirdea411.43%133.33%
Total35100.00%3100.00%


static inline int unwind__prepare_access(struct thread *thread __maybe_unused, struct map *map __maybe_unused, bool *initialized __maybe_unused) { return 0; }

Contributors

PersonTokensPropCommitsCommitProp
Namhyung Kim1659.26%133.33%
He Kuang622.22%133.33%
Jiri Olsa518.52%133.33%
Total27100.00%3100.00%


static inline void unwind__flush_access(struct thread *thread __maybe_unused) {}

Contributors

PersonTokensPropCommitsCommitProp
Namhyung Kim12100.00%1100.00%
Total12100.00%1100.00%


static inline void unwind__finish_access(struct thread *thread __maybe_unused) {}

Contributors

PersonTokensPropCommitsCommitProp
Namhyung Kim12100.00%1100.00%
Total12100.00%1100.00%

#endif /* HAVE_DWARF_UNWIND_SUPPORT */ #endif /* __UNWIND_H */

Overall Contributors

PersonTokensPropCommitsCommitProp
Jiri Olsa13235.29%323.08%
He Kuang11631.02%430.77%
Namhyung Kim11430.48%323.08%
Arnaldo Carvalho de Melo71.87%17.69%
Irina Tirdea41.07%17.69%
Borislav Petkov10.27%17.69%
Total374100.00%13100.00%
Directory: tools/perf/util
Information contained on this website is for historical information purposes only and does not indicate or represent copyright ownership.
Created with cregit.