diff options
author | Ingo Molnar <mingo@elte.hu> | 2006-07-03 03:24:38 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@g5.osdl.org> | 2006-07-03 18:27:02 -0400 |
commit | 8637c09901049f061b94f684915d4f18ecf91d79 (patch) | |
tree | 83ca3ab38ab4d12f4e10176ba01ae33809388767 /kernel | |
parent | f0a5c315eb266edc608a29971bb4ff1a3025c58f (diff) |
[PATCH] lockdep: stacktrace subsystem, core
Framework to generate and save stacktraces quickly, without printing anything
to the console.
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Signed-off-by: Arjan van de Ven <arjan@linux.intel.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'kernel')
-rw-r--r-- | kernel/Makefile | 1 | ||||
-rw-r--r-- | kernel/stacktrace.c | 24 |
2 files changed, 25 insertions, 0 deletions
diff --git a/kernel/Makefile b/kernel/Makefile index 82fb182f6f61..e7fd20e70f1b 100644 --- a/kernel/Makefile +++ b/kernel/Makefile | |||
@@ -10,6 +10,7 @@ obj-y = sched.o fork.o exec_domain.o panic.o printk.o profile.o \ | |||
10 | kthread.o wait.o kfifo.o sys_ni.o posix-cpu-timers.o mutex.o \ | 10 | kthread.o wait.o kfifo.o sys_ni.o posix-cpu-timers.o mutex.o \ |
11 | hrtimer.o | 11 | hrtimer.o |
12 | 12 | ||
13 | obj-$(CONFIG_STACKTRACE) += stacktrace.o | ||
13 | obj-y += time/ | 14 | obj-y += time/ |
14 | obj-$(CONFIG_DEBUG_MUTEXES) += mutex-debug.o | 15 | obj-$(CONFIG_DEBUG_MUTEXES) += mutex-debug.o |
15 | obj-$(CONFIG_FUTEX) += futex.o | 16 | obj-$(CONFIG_FUTEX) += futex.o |
diff --git a/kernel/stacktrace.c b/kernel/stacktrace.c new file mode 100644 index 000000000000..b71816e47a30 --- /dev/null +++ b/kernel/stacktrace.c | |||
@@ -0,0 +1,24 @@ | |||
1 | /* | ||
2 | * kernel/stacktrace.c | ||
3 | * | ||
4 | * Stack trace management functions | ||
5 | * | ||
6 | * Copyright (C) 2006 Red Hat, Inc., Ingo Molnar <mingo@redhat.com> | ||
7 | */ | ||
8 | #include <linux/sched.h> | ||
9 | #include <linux/kallsyms.h> | ||
10 | #include <linux/stacktrace.h> | ||
11 | |||
12 | void print_stack_trace(struct stack_trace *trace, int spaces) | ||
13 | { | ||
14 | int i, j; | ||
15 | |||
16 | for (i = 0; i < trace->nr_entries; i++) { | ||
17 | unsigned long ip = trace->entries[i]; | ||
18 | |||
19 | for (j = 0; j < spaces + 1; j++) | ||
20 | printk(" "); | ||
21 | print_ip_sym(ip); | ||
22 | } | ||
23 | } | ||
24 | |||