File tree Expand file tree Collapse file tree 3 files changed +43
-0
lines changed Expand file tree Collapse file tree 3 files changed +43
-0
lines changed Original file line number Diff line number Diff line change @@ -62,6 +62,9 @@ config NEED_SG_DMA_LENGTH
62
62
config SWIOTLB
63
63
bool
64
64
65
+ config STACKTRACE_SUPPORT
66
+ def_bool y
67
+
65
68
config GENERIC_LOCKBREAK
66
69
def_bool n
67
70
Original file line number Diff line number Diff line change @@ -34,6 +34,7 @@ obj-$(CONFIG_AUDIT) += audit.o
34
34
obj-$(CONFIG_PCI_MSI) += msi_ia64.o
35
35
mca_recovery-y += mca_drv.o mca_drv_asm.o
36
36
obj-$(CONFIG_IA64_MC_ERR_INJECT)+ = err_inject.o
37
+ obj-$(CONFIG_STACKTRACE) += stacktrace.o
37
38
38
39
obj-$(CONFIG_PARAVIRT) += paravirt.o paravirtentry.o \
39
40
paravirt_patch.o
Original file line number Diff line number Diff line change
1
+ /*
2
+ * arch/ia64/kernel/stacktrace.c
3
+ *
4
+ * Stack trace management functions
5
+ *
6
+ */
7
+ #include <linux/sched.h>
8
+ #include <linux/stacktrace.h>
9
+ #include <linux/module.h>
10
+
11
+ static void
12
+ ia64_do_save_stack (struct unw_frame_info * info , void * arg )
13
+ {
14
+ struct stack_trace * trace = arg ;
15
+ unsigned long ip ;
16
+ int skip = trace -> skip ;
17
+
18
+ trace -> nr_entries = 0 ;
19
+ do {
20
+ unw_get_ip (info , & ip );
21
+ if (ip == 0 )
22
+ break ;
23
+ if (skip == 0 ) {
24
+ trace -> entries [trace -> nr_entries ++ ] = ip ;
25
+ if (trace -> nr_entries == trace -> max_entries )
26
+ break ;
27
+ } else
28
+ skip -- ;
29
+ } while (unw_unwind (info ) >= 0 );
30
+ }
31
+
32
+ /*
33
+ * Save stack-backtrace addresses into a stack_trace buffer.
34
+ */
35
+ void save_stack_trace (struct stack_trace * trace )
36
+ {
37
+ unw_init_running (ia64_do_save_stack , trace );
38
+ }
39
+ EXPORT_SYMBOL (save_stack_trace );
You can’t perform that action at this time.
0 commit comments