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/module.h> 11 #include <linux/kallsyms.h> 12 #include <linux/stacktrace.h> 13 print_stack_trace(struct stack_trace * trace,int spaces)14void print_stack_trace(struct stack_trace *trace, int spaces) 15 { 16 int i; 17 18 if (WARN_ON(!trace->entries)) 19 return; 20 21 for (i = 0; i < trace->nr_entries; i++) { 22 printk("%*c", 1 + spaces, ' '); 23 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 get this 30 * weak alias and a once-per-bootup warning (whenever this facility 31 * is utilized - for example by procfs): 32 */ 33 __weak void save_stack_trace_tsk(struct task_struct * tsk,struct stack_trace * trace)34save_stack_trace_tsk(struct task_struct *tsk, struct stack_trace *trace) 35 { 36 WARN_ONCE(1, KERN_INFO "save_stack_trace_tsk() not implemented yet.\n"); 37 } 38