xref: /linux-6.15/kernel/stacktrace.c (revision 9212ddb5)
18637c099SIngo Molnar /*
28637c099SIngo Molnar  * kernel/stacktrace.c
38637c099SIngo Molnar  *
48637c099SIngo Molnar  * Stack trace management functions
58637c099SIngo Molnar  *
68637c099SIngo Molnar  *  Copyright (C) 2006 Red Hat, Inc., Ingo Molnar <[email protected]>
78637c099SIngo Molnar  */
88637c099SIngo Molnar #include <linux/sched.h>
9*9212ddb5SIngo Molnar #include <linux/kernel.h>
108594698eSIngo Molnar #include <linux/module.h>
118637c099SIngo Molnar #include <linux/kallsyms.h>
128637c099SIngo Molnar #include <linux/stacktrace.h>
138637c099SIngo Molnar 
148637c099SIngo Molnar void print_stack_trace(struct stack_trace *trace, int spaces)
158637c099SIngo Molnar {
16a5a242dcSVegard Nossum 	int i;
178637c099SIngo Molnar 
18bfeeeeb9SJohannes Berg 	if (WARN_ON(!trace->entries))
19bfeeeeb9SJohannes Berg 		return;
20bfeeeeb9SJohannes Berg 
218637c099SIngo Molnar 	for (i = 0; i < trace->nr_entries; i++) {
22a5a242dcSVegard Nossum 		printk("%*c", 1 + spaces, ' ');
23a5a242dcSVegard Nossum 		print_ip_sym(trace->entries[i]);
248637c099SIngo Molnar 	}
258637c099SIngo Molnar }
268594698eSIngo Molnar EXPORT_SYMBOL_GPL(print_stack_trace);
278637c099SIngo Molnar 
28*9212ddb5SIngo Molnar /*
29*9212ddb5SIngo Molnar  * Architectures that do not implement save_stack_trace_tsk get this
30*9212ddb5SIngo Molnar  * weak alias and a once-per-bootup warning (whenever this facility
31*9212ddb5SIngo Molnar  * is utilized - for example by procfs):
32*9212ddb5SIngo Molnar  */
33*9212ddb5SIngo Molnar __weak void
34*9212ddb5SIngo Molnar save_stack_trace_tsk(struct task_struct *tsk, struct stack_trace *trace)
35*9212ddb5SIngo Molnar {
36*9212ddb5SIngo Molnar 	WARN_ONCE(1, KERN_INFO "save_stack_trace_tsk() not implemented yet.\n");
37*9212ddb5SIngo Molnar }
38