Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 7b599ef5 authored by Jan Kiszka's avatar Jan Kiszka Committed by Linus Torvalds
Browse files

scripts/gdb: add internal helper and convenience function to look up a module



Add the internal helper get_module_by_name to obtain the module structure
corresponding to the given name.  Also export this service as a
convenience function.

Signed-off-by: default avatarJan Kiszka <jan.kiszka@siemens.com>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: Jason Wessel <jason.wessel@windriver.com>
Cc: Andi Kleen <andi@firstfloor.org>
Cc: Ben Widawsky <ben@bwidawsk.net>
Cc: Borislav Petkov <bp@suse.de>
Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
parent 82b41e3d
Loading
Loading
Loading
Loading
+28 −0
Original line number Diff line number Diff line
@@ -37,3 +37,31 @@ class ModuleList:
            return utils.container_of(entry, self.module_ptr_type, "list")
        else:
            raise StopIteration


def find_module_by_name(name):
    for module in ModuleList():
        if module['name'].string() == name:
            return module
    return None


class LxModule(gdb.Function):
    """Find module by name and return the module variable.

$lx_module("MODULE"): Given the name MODULE, iterate over all loaded modules
of the target and return that module variable which MODULE matches."""

    def __init__(self):
        super(LxModule, self).__init__("lx_module")

    def invoke(self, mod_name):
        mod_name = mod_name.string()
        module = find_module_by_name(mod_name)
        if module:
            return module.dereference()
        else:
            raise gdb.GdbError("Unable to find MODULE " + mod_name)


LxModule()
+1 −0
Original line number Diff line number Diff line
@@ -24,3 +24,4 @@ except:
else:
    import linux.utils
    import linux.symbols
    import linux.modules