FazBrowse GitHub Viewer
|
Trending
|
URL:
|
Home
Tools:
[Download Repo ZIP]
[View Raw Code]
[Original HTTPS Page]
linux/kernel/stacktrace.c at master · flexbed/linux · GitHub
flexbed
/
linux
Public
forked from
torvalds/linux
Notifications
You must be signed in to change notification settings
Fork
0
Star
0
Code
Pull requests
0
Actions
Projects
Security and quality
0
Insights
Additional navigation options
Code
Pull requests
Actions
Projects
Security and quality
Insights
Expand file tree
Breadcrumbs
linux
/
kernel
/
stacktrace.c
Copy path
More file actions
More file actions
Latest commit
History
History
History
79 lines (67 loc) · 1.79 KB
Breadcrumbs
linux
/
kernel
/
stacktrace.c
Copy path
File metadata and controls
79 lines (67 loc) · 1.79 KB
Raw
Copy raw file
Download raw file
Open symbols panel
Edit and raw actions
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
/*
* kernel/stacktrace.c
*
* Stack trace management functions
*
* Copyright (C) 2006 Red Hat, Inc., Ingo Molnar <mingo@redhat.com>
*/
#include
<linux/sched.h>
#include
<linux/kernel.h>
#include
<linux/export.h>
#include
<linux/kallsyms.h>
#include
<linux/stacktrace.h>
void
print_stack_trace
(
struct
stack_trace
*
trace
,
int
spaces
)
{
int
i
;
if
(
WARN_ON
(!
trace
->
entries
))
return
;
for
(
i
=
0
;
i
<
trace
->
nr_entries
;
i
++
)
printk
(
"%*c%pS\n"
,
1
+
spaces
,
' '
, (
void
*
)
trace
->
entries
[
i
]);
}
EXPORT_SYMBOL_GPL
(
print_stack_trace
);
int
snprint_stack_trace
(
char
*
buf
,
size_t
size
,
struct
stack_trace
*
trace
,
int
spaces
)
{
int
i
;
int
generated
;
int
total
=
0
;
if
(
WARN_ON
(!
trace
->
entries
))
return
0
;
for
(
i
=
0
;
i
<
trace
->
nr_entries
;
i
++
) {
generated
=
snprintf
(
buf
,
size
,
"%*c%pS\n"
,
1
+
spaces
,
' '
,
(
void
*
)
trace
->
entries
[
i
]);
total
+=
generated
;
/* Assume that generated isn't a negative number */
if
(
generated
>=
size
) {
buf
+=
size
;
size
=
0
;
}
else
{
buf
+=
generated
;
size
-=
generated
;
}
}
return
total
;
}
EXPORT_SYMBOL_GPL
(
snprint_stack_trace
);
/*
* Architectures that do not implement save_stack_trace_*()
* get these weak aliases and once-per-bootup warnings
* (whenever this facility is utilized - for example by procfs):
*/
__weak
void
save_stack_trace_tsk
(
struct
task_struct
*
tsk
,
struct
stack_trace
*
trace
)
{
WARN_ONCE
(
1
,
KERN_INFO
"save_stack_trace_tsk() not implemented yet.\n"
);
}
__weak
void
save_stack_trace_regs
(
struct
pt_regs
*
regs
,
struct
stack_trace
*
trace
)
{
WARN_ONCE
(
1
,
KERN_INFO
"save_stack_trace_regs() not implemented yet.\n"
);
}
__weak
int
save_stack_trace_tsk_reliable
(
struct
task_struct
*
tsk
,
struct
stack_trace
*
trace
)
{
WARN_ONCE
(
1
,
KERN_INFO
"save_stack_tsk_reliable() not implemented yet.\n"
);
return
-
ENOSYS
;
}
Back
|
FazBrowse Home
|
New Git URL