This class allows to iterate over all tasks of the target. Signed-off-by: Jan Kiszka <[email protected]> --- scripts/gdb/linux/tasks.py | 46 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 scripts/gdb/linux/tasks.py
diff --git a/scripts/gdb/linux/tasks.py b/scripts/gdb/linux/tasks.py new file mode 100644 index 0000000..cd25984 --- /dev/null +++ b/scripts/gdb/linux/tasks.py @@ -0,0 +1,46 @@ +# +# gdb helper commands and functions for Linux kernel debugging +# +# task & thread tools +# +# Copyright (c) Siemens AG, 2011-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 + + +task_type = utils.CachedType("struct task_struct") + + +class TaskList: + def __init__(self): + global task_type + self.task_ptr_type = task_type.get_type().pointer() + self.init_task = gdb.parse_and_eval("init_task") + self.curr_group = self.init_task.address + self.curr_task = None + + def __iter__(self): + return self + + def next(self): + t = self.curr_task + if not t or t == self.curr_group: + self.curr_group = \ + utils.container_of(self.curr_group['tasks']['next'], + self.task_ptr_type, "tasks") + if self.curr_group == self.init_task.address: + raise StopIteration + t = self.curr_task = self.curr_group + else: + self.curr_task = \ + utils.container_of(t['thread_group']['next'], + self.task_ptr_type, "thread_group") + return t -- 1.8.1.1.298.ge7eed54 ------------------------------------------------------------------------------ October Webinars: Code for Performance Free Intel webinars can help you accelerate application performance. Explore tips for MPI, OpenMP, advanced profiling, and more. Get the most from the latest Intel processors and coprocessors. See abstracts and register > http://pubads.g.doubleclick.net/gampad/clk?id=60135991&iu=/4140/ostg.clktrk _______________________________________________ Kgdb-bugreport mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/kgdb-bugreport
