diff options
author | Paul Mundt <lethal@linux-sh.org> | 2008-09-12 12:44:03 -0400 |
---|---|---|
committer | Paul Mundt <lethal@linux-sh.org> | 2008-09-12 12:44:03 -0400 |
commit | 5a89f1adbc5ce44988aab0c370ae2f1478061307 (patch) | |
tree | 934ea889b6fecd00eacaa18be210a063177f98b0 /arch/sh/kernel/stacktrace.c | |
parent | 0e660d2d433393f983cd58fe8c54f831fa7c7713 (diff) |
sh: latencytop support.
Signed-off-by: Paul Mundt <lethal@linux-sh.org>
Diffstat (limited to 'arch/sh/kernel/stacktrace.c')
-rw-r--r-- | arch/sh/kernel/stacktrace.c | 23 |
1 files changed, 22 insertions, 1 deletions
diff --git a/arch/sh/kernel/stacktrace.c b/arch/sh/kernel/stacktrace.c index 54d1f61aa007..1a2a5eb76e41 100644 --- a/arch/sh/kernel/stacktrace.c +++ b/arch/sh/kernel/stacktrace.c | |||
@@ -3,7 +3,7 @@ | |||
3 | * | 3 | * |
4 | * Stack trace management functions | 4 | * Stack trace management functions |
5 | * | 5 | * |
6 | * Copyright (C) 2006 Paul Mundt | 6 | * Copyright (C) 2006 - 2008 Paul Mundt |
7 | * | 7 | * |
8 | * This file is subject to the terms and conditions of the GNU General Public | 8 | * This file is subject to the terms and conditions of the GNU General Public |
9 | * License. See the file "COPYING" in the main directory of this archive | 9 | * License. See the file "COPYING" in the main directory of this archive |
@@ -36,3 +36,24 @@ void save_stack_trace(struct stack_trace *trace) | |||
36 | } | 36 | } |
37 | } | 37 | } |
38 | EXPORT_SYMBOL_GPL(save_stack_trace); | 38 | EXPORT_SYMBOL_GPL(save_stack_trace); |
39 | |||
40 | void save_stack_trace_tsk(struct task_struct *tsk, struct stack_trace *trace) | ||
41 | { | ||
42 | unsigned long *sp = (unsigned long *)tsk->thread.sp; | ||
43 | |||
44 | while (!kstack_end(sp)) { | ||
45 | unsigned long addr = *sp++; | ||
46 | |||
47 | if (__kernel_text_address(addr)) { | ||
48 | if (in_sched_functions(addr)) | ||
49 | break; | ||
50 | if (trace->skip > 0) | ||
51 | trace->skip--; | ||
52 | else | ||
53 | trace->entries[trace->nr_entries++] = addr; | ||
54 | if (trace->nr_entries >= trace->max_entries) | ||
55 | break; | ||
56 | } | ||
57 | } | ||
58 | } | ||
59 | EXPORT_SYMBOL_GPL(save_stack_trace_tsk); | ||