|
@@ -13,7 +13,7 @@
|
|
|
|
|
|
import gdb
|
|
import gdb
|
|
|
|
|
|
-from linux import cpus, utils
|
|
|
|
|
|
+from linux import cpus, utils, lists
|
|
|
|
|
|
|
|
|
|
module_type = utils.CachedType("struct module")
|
|
module_type = utils.CachedType("struct module")
|
|
@@ -23,12 +23,9 @@ def module_list():
|
|
global module_type
|
|
global module_type
|
|
module_ptr_type = module_type.get_type().pointer()
|
|
module_ptr_type = module_type.get_type().pointer()
|
|
modules = gdb.parse_and_eval("modules")
|
|
modules = gdb.parse_and_eval("modules")
|
|
- entry = modules['next']
|
|
|
|
- end_of_list = modules.address
|
|
|
|
|
|
|
|
- while entry != end_of_list:
|
|
|
|
- yield utils.container_of(entry, module_ptr_type, "list")
|
|
|
|
- entry = entry['next']
|
|
|
|
|
|
+ for module in lists.list_for_each_entry(modules, module_ptr_type, "list"):
|
|
|
|
+ yield module
|
|
|
|
|
|
|
|
|
|
def find_module_by_name(name):
|
|
def find_module_by_name(name):
|
|
@@ -80,17 +77,15 @@ class LxLsmod(gdb.Command):
|
|
size=str(layout['size']),
|
|
size=str(layout['size']),
|
|
ref=str(module['refcnt']['counter'] - 1)))
|
|
ref=str(module['refcnt']['counter'] - 1)))
|
|
|
|
|
|
- source_list = module['source_list']
|
|
|
|
t = self._module_use_type.get_type().pointer()
|
|
t = self._module_use_type.get_type().pointer()
|
|
- entry = source_list['next']
|
|
|
|
first = True
|
|
first = True
|
|
- while entry != source_list.address:
|
|
|
|
- use = utils.container_of(entry, t, "source_list")
|
|
|
|
|
|
+ sources = module['source_list']
|
|
|
|
+ for use in lists.list_for_each_entry(sources, t, "source_list"):
|
|
gdb.write("{separator}{name}".format(
|
|
gdb.write("{separator}{name}".format(
|
|
separator=" " if first else ",",
|
|
separator=" " if first else ",",
|
|
name=use['source']['name'].string()))
|
|
name=use['source']['name'].string()))
|
|
first = False
|
|
first = False
|
|
- entry = entry['next']
|
|
|
|
|
|
+
|
|
gdb.write("\n")
|
|
gdb.write("\n")
|
|
|
|
|
|
|
|
|