diff options
author | Jan Kiszka <[email protected]> | 2015-02-17 13:46:44 -0800 |
---|---|---|
committer | Linus Torvalds <[email protected]> | 2015-02-17 14:34:53 -0800 |
commit | 850202e17df68c51593bab36a26c8d9279f8c029 (patch) | |
tree | 3eacbf7e18cb4abe38c3ef57b3a5b13317862e00 | |
parent | b0fecd8c570310c5041035a94eda7a4610402ace (diff) |
scripts/gdb: add module iteration class
Will soon be used for loading symbols, printing global variables or
listing modules.
Signed-off-by: Jan Kiszka <[email protected]>
Cc: Thomas Gleixner <[email protected]>
Cc: Jason Wessel <[email protected]>
Cc: Andi Kleen <[email protected]>
Cc: Ben Widawsky <[email protected]>
Cc: Borislav Petkov <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
-rw-r--r-- | scripts/gdb/linux/modules.py | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/scripts/gdb/linux/modules.py b/scripts/gdb/linux/modules.py new file mode 100644 index 000000000000..8a65c3d5eecb --- /dev/null +++ b/scripts/gdb/linux/modules.py @@ -0,0 +1,39 @@ +# +# gdb helper commands and functions for Linux kernel debugging +# +# module tools +# +# Copyright (c) Siemens AG, 2013 +# +# Authors: +# Jan Kiszka <[email protected]> +# +# This work is licensed under the terms of the GNU GPL version 2. +# + +import gdb + +from linux import utils + + +module_type = utils.CachedType("struct module") + + +class ModuleList: + def __init__(self): + global module_type + self.module_ptr_type = module_type.get_type().pointer() + modules = gdb.parse_and_eval("modules") + self.curr_entry = modules['next'] + self.end_of_list = modules.address + + def __iter__(self): + return self + + def next(self): + entry = self.curr_entry + if entry != self.end_of_list: + self.curr_entry = entry['next'] + return utils.container_of(entry, self.module_ptr_type, "list") + else: + raise StopIteration |