/* SPDX-License-Identifier: GPL-2.0 */ | |
#ifndef _LIBLOCKDEP_LINUX_STACKTRACE_H_ | |
#define _LIBLOCKDEP_LINUX_STACKTRACE_H_ | |
#include <execinfo.h> | |
struct stack_trace { | |
unsigned int nr_entries, max_entries; | |
unsigned long *entries; | |
int skip; | |
}; | |
static inline void print_stack_trace(struct stack_trace *trace, int spaces) | |
{ | |
backtrace_symbols_fd((void **)trace->entries, trace->nr_entries, 1); | |
} | |
#define save_stack_trace(trace) \ | |
((trace)->nr_entries = \ | |
backtrace((void **)(trace)->entries, (trace)->max_entries)) | |
static inline int dump_stack(void) | |
{ | |
void *array[64]; | |
size_t size; | |
size = backtrace(array, 64); | |
backtrace_symbols_fd(array, size, 1); | |
return 0; | |
} | |
#endif |