Branch data Line data Source code
1 : : /*
2 : : * kernel/stacktrace.c
3 : : *
4 : : * Stack trace management functions
5 : : *
6 : : * Copyright (C) 2006 Red Hat, Inc., Ingo Molnar <mingo@redhat.com>
7 : : */
8 : : #include <linux/sched.h>
9 : : #include <linux/kernel.h>
10 : : #include <linux/export.h>
11 : : #include <linux/kallsyms.h>
12 : : #include <linux/stacktrace.h>
13 : :
14 : 0 : void print_stack_trace(struct stack_trace *trace, int spaces)
15 : : {
16 : : int i;
17 : :
18 [ # # ][ # # ]: 0 : if (WARN_ON(!trace->entries))
19 : 0 : return;
20 : :
21 [ # # ]: 0 : for (i = 0; i < trace->nr_entries; i++) {
22 : 0 : printk("%*c", 1 + spaces, ' ');
23 : 0 : print_ip_sym(trace->entries[i]);
24 : : }
25 : : }
26 : : EXPORT_SYMBOL_GPL(print_stack_trace);
27 : :
28 : : /*
29 : : * Architectures that do not implement save_stack_trace_tsk or
30 : : * save_stack_trace_regs get this weak alias and a once-per-bootup warning
31 : : * (whenever this facility is utilized - for example by procfs):
32 : : */
33 : : __weak void
34 : 0 : save_stack_trace_tsk(struct task_struct *tsk, struct stack_trace *trace)
35 : : {
36 [ # # ][ # # ]: 0 : WARN_ONCE(1, KERN_INFO "save_stack_trace_tsk() not implemented yet.\n");
37 : 0 : }
38 : :
39 : : __weak void
40 : 0 : save_stack_trace_regs(struct pt_regs *regs, struct stack_trace *trace)
41 : : {
42 [ # # ][ # # ]: 0 : WARN_ONCE(1, KERN_INFO "save_stack_trace_regs() not implemented yet.\n");
43 : 0 : }
|