xref: /linux-6.15/arch/arc/kernel/stacktrace.c (revision c08098f2)
1*c08098f2SVineet Gupta /*
2*c08098f2SVineet Gupta  * Copyright (C) 2004, 2007-2010, 2011-2012 Synopsys, Inc. (www.synopsys.com)
3*c08098f2SVineet Gupta  *
4*c08098f2SVineet Gupta  * This program is free software; you can redistribute it and/or modify
5*c08098f2SVineet Gupta  * it under the terms of the GNU General Public License version 2 as
6*c08098f2SVineet Gupta  * published by the Free Software Foundation.
7*c08098f2SVineet Gupta  */
8*c08098f2SVineet Gupta 
9*c08098f2SVineet Gupta #include <linux/ptrace.h>
10*c08098f2SVineet Gupta #include <linux/export.h>
11*c08098f2SVineet Gupta 
12*c08098f2SVineet Gupta /*-------------------------------------------------------------------------
13*c08098f2SVineet Gupta  *              APIs expected by various kernel sub-systems
14*c08098f2SVineet Gupta  *-------------------------------------------------------------------------
15*c08098f2SVineet Gupta  */
16*c08098f2SVineet Gupta 
17*c08098f2SVineet Gupta noinline void show_stacktrace(struct task_struct *tsk, struct pt_regs *regs)
18*c08098f2SVineet Gupta {
19*c08098f2SVineet Gupta 	pr_info("\nStack Trace: NOT Available\n");
20*c08098f2SVineet Gupta }
21*c08098f2SVineet Gupta EXPORT_SYMBOL(show_stacktrace);
22*c08098f2SVineet Gupta 
23*c08098f2SVineet Gupta /* Expected by sched Code */
24*c08098f2SVineet Gupta void show_stack(struct task_struct *tsk, unsigned long *sp)
25*c08098f2SVineet Gupta {
26*c08098f2SVineet Gupta 	show_stacktrace(tsk, NULL);
27*c08098f2SVineet Gupta }
28*c08098f2SVineet Gupta 
29*c08098f2SVineet Gupta /* Expected by Rest of kernel code */
30*c08098f2SVineet Gupta void dump_stack(void)
31*c08098f2SVineet Gupta {
32*c08098f2SVineet Gupta 	show_stacktrace(NULL, NULL);
33*c08098f2SVineet Gupta }
34*c08098f2SVineet Gupta EXPORT_SYMBOL(dump_stack);
35*c08098f2SVineet Gupta 
36*c08098f2SVineet Gupta /* Another API expected by schedular, shows up in "ps" as Wait Channel
37*c08098f2SVineet Gupta  * Ofcourse just returning schedule( ) would be pointless so unwind until
38*c08098f2SVineet Gupta  * the function is not in schedular code
39*c08098f2SVineet Gupta  */
40*c08098f2SVineet Gupta unsigned int get_wchan(struct task_struct *tsk)
41*c08098f2SVineet Gupta {
42*c08098f2SVineet Gupta 	return 0;
43*c08098f2SVineet Gupta }
44