diff options
author | Jason Wessel <jason.wessel@windriver.com> | 2010-05-20 22:04:21 -0400 |
---|---|---|
committer | Jason Wessel <jason.wessel@windriver.com> | 2010-05-20 22:04:21 -0400 |
commit | 67fc4e0cb931d6b4ccf21248e4199b154478ecea (patch) | |
tree | 4cf49d00bc9ac03c3c77d91fadd13fcabc75e0c9 /kernel/kallsyms.c | |
parent | 5d5314d6795f3c1c0f415348ff8c51f7de042b77 (diff) |
kdb: core for kgdb back end (2 of 2)
This patch contains the hooks and instrumentation into kernel which
live outside the kernel/debug directory, which the kdb core
will call to run commands like lsmod, dmesg, bt etc...
CC: linux-arch@vger.kernel.org
Signed-off-by: Jason Wessel <jason.wessel@windriver.com>
Signed-off-by: Martin Hicks <mort@sgi.com>
Diffstat (limited to 'kernel/kallsyms.c')
-rw-r--r-- | kernel/kallsyms.c | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/kernel/kallsyms.c b/kernel/kallsyms.c index 13aff293f4de..6f6d091b5757 100644 --- a/kernel/kallsyms.c +++ b/kernel/kallsyms.c | |||
@@ -16,6 +16,7 @@ | |||
16 | #include <linux/init.h> | 16 | #include <linux/init.h> |
17 | #include <linux/seq_file.h> | 17 | #include <linux/seq_file.h> |
18 | #include <linux/fs.h> | 18 | #include <linux/fs.h> |
19 | #include <linux/kdb.h> | ||
19 | #include <linux/err.h> | 20 | #include <linux/err.h> |
20 | #include <linux/proc_fs.h> | 21 | #include <linux/proc_fs.h> |
21 | #include <linux/sched.h> /* for cond_resched */ | 22 | #include <linux/sched.h> /* for cond_resched */ |
@@ -516,6 +517,26 @@ static int kallsyms_open(struct inode *inode, struct file *file) | |||
516 | return ret; | 517 | return ret; |
517 | } | 518 | } |
518 | 519 | ||
520 | #ifdef CONFIG_KGDB_KDB | ||
521 | const char *kdb_walk_kallsyms(loff_t *pos) | ||
522 | { | ||
523 | static struct kallsym_iter kdb_walk_kallsyms_iter; | ||
524 | if (*pos == 0) { | ||
525 | memset(&kdb_walk_kallsyms_iter, 0, | ||
526 | sizeof(kdb_walk_kallsyms_iter)); | ||
527 | reset_iter(&kdb_walk_kallsyms_iter, 0); | ||
528 | } | ||
529 | while (1) { | ||
530 | if (!update_iter(&kdb_walk_kallsyms_iter, *pos)) | ||
531 | return NULL; | ||
532 | ++*pos; | ||
533 | /* Some debugging symbols have no name. Ignore them. */ | ||
534 | if (kdb_walk_kallsyms_iter.name[0]) | ||
535 | return kdb_walk_kallsyms_iter.name; | ||
536 | } | ||
537 | } | ||
538 | #endif /* CONFIG_KGDB_KDB */ | ||
539 | |||
519 | static const struct file_operations kallsyms_operations = { | 540 | static const struct file_operations kallsyms_operations = { |
520 | .open = kallsyms_open, | 541 | .open = kallsyms_open, |
521 | .read = seq_read, | 542 | .read = seq_read, |