diff options
author | Dmitry Torokhov <dmitry.torokhov@gmail.com> | 2015-02-10 14:35:36 -0500 |
---|---|---|
committer | Dmitry Torokhov <dmitry.torokhov@gmail.com> | 2015-02-10 14:35:36 -0500 |
commit | 4ba24fef3eb3b142197135223b90ced2f319cd53 (patch) | |
tree | a20c125b27740ec7b4c761b11d801108e1b316b2 /kernel/stacktrace.c | |
parent | 47c1ffb2b6b630894e9a16442611c056ab21c057 (diff) | |
parent | 98a4a59ee31a12105a2b84f5b8b515ac2cb208ef (diff) |
Merge branch 'next' into for-linus
Prepare first round of input updates for 3.20.
Diffstat (limited to 'kernel/stacktrace.c')
-rw-r--r-- | kernel/stacktrace.c | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/kernel/stacktrace.c b/kernel/stacktrace.c index 00fe55cc5a82..b6e4c16377c7 100644 --- a/kernel/stacktrace.c +++ b/kernel/stacktrace.c | |||
@@ -25,6 +25,38 @@ void print_stack_trace(struct stack_trace *trace, int spaces) | |||
25 | } | 25 | } |
26 | EXPORT_SYMBOL_GPL(print_stack_trace); | 26 | EXPORT_SYMBOL_GPL(print_stack_trace); |
27 | 27 | ||
28 | int snprint_stack_trace(char *buf, size_t size, | ||
29 | struct stack_trace *trace, int spaces) | ||
30 | { | ||
31 | int i; | ||
32 | unsigned long ip; | ||
33 | int generated; | ||
34 | int total = 0; | ||
35 | |||
36 | if (WARN_ON(!trace->entries)) | ||
37 | return 0; | ||
38 | |||
39 | for (i = 0; i < trace->nr_entries; i++) { | ||
40 | ip = trace->entries[i]; | ||
41 | generated = snprintf(buf, size, "%*c[<%p>] %pS\n", | ||
42 | 1 + spaces, ' ', (void *) ip, (void *) ip); | ||
43 | |||
44 | total += generated; | ||
45 | |||
46 | /* Assume that generated isn't a negative number */ | ||
47 | if (generated >= size) { | ||
48 | buf += size; | ||
49 | size = 0; | ||
50 | } else { | ||
51 | buf += generated; | ||
52 | size -= generated; | ||
53 | } | ||
54 | } | ||
55 | |||
56 | return total; | ||
57 | } | ||
58 | EXPORT_SYMBOL_GPL(snprint_stack_trace); | ||
59 | |||
28 | /* | 60 | /* |
29 | * Architectures that do not implement save_stack_trace_tsk or | 61 | * 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 | 62 | * save_stack_trace_regs get this weak alias and a once-per-bootup warning |