39 lines · 776 B · C
RawDownload
/* * arch/ia64/kernel/stacktrace.c * * Stack trace management functions * */#include <linux/sched.h>#include <linux/stacktrace.h>#include <linux/module.h> static voidia64_do_save_stack(struct unw_frame_info *info, void *arg){	struct stack_trace *trace = arg;	unsigned long ip;	int skip = trace->skip; 	trace->nr_entries = 0;	do {		unw_get_ip(info, &ip);		if (ip == 0)			break;		if (skip == 0) {			trace->entries[trace->nr_entries++] = ip;			if (trace->nr_entries == trace->max_entries)				break;		} else			skip--;	} while (unw_unwind(info) >= 0);} /* * Save stack-backtrace addresses into a stack_trace buffer. */void save_stack_trace(struct stack_trace *trace){	unw_init_running(ia64_do_save_stack, trace);}EXPORT_SYMBOL(save_stack_trace);