All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jan Kiszka <jan.kiszka@siemens.com>
To: Andrew Morton <akpm@linux-foundation.org>, linux-kernel@vger.kernel.org
Cc: Thomas Gleixner <tglx@linutronix.de>,
	Jason Wessel <jason.wessel@windriver.com>,
	kgdb-bugreport@lists.sourceforge.net,
	Andi Kleen <andi@firstfloor.org>, Tom Tromey <tromey@redhat.com>,
	Ben Widawsky <ben@bwidawsk.net>, Borislav Petkov <bp@suse.de>
Subject: [PATCH v11 12/28] scripts/gdb: Add task iteration class
Date: Thu, 29 Jan 2015 07:46:31 +0100	[thread overview]
Message-ID: <d57d54f83a6e5c7557715dbaf50d2e7351e6b7f6.1422514006.git.jan.kiszka@siemens.com> (raw)
In-Reply-To: <cover.1422514006.git.jan.kiszka@siemens.com>
In-Reply-To: <cover.1422514006.git.jan.kiszka@siemens.com>

This class allows to iterate over all tasks of the target.

Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
---
 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 <jan.kiszka@siemens.com>
+#
+# 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
-- 
2.1.4


  parent reply	other threads:[~2015-01-29  7:14 UTC|newest]

Thread overview: 38+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-01-29  6:46 [PATCH v11 00/28] Add gdb python scripts as kernel debugging helpers Jan Kiszka
2015-01-29  6:46 ` Jan Kiszka
2015-01-29  6:46 ` [PATCH v11 01/28] scripts/gdb: Add infrastructure Jan Kiszka
2015-01-29 13:23   ` Michal Marek
2015-01-29 13:37     ` Jan Kiszka
2015-01-29  6:46 ` [PATCH v11 02/28] scripts/gdb: Add cache for type objects Jan Kiszka
2015-01-29  6:46 ` [PATCH v11 03/28] scripts/gdb: Add container_of helper and convenience function Jan Kiszka
2015-01-29  6:46 ` [PATCH v11 04/28] scripts/gdb: Add module iteration class Jan Kiszka
2015-01-29  6:46 ` [PATCH v11 05/28] scripts/gdb: Add lx-symbols command Jan Kiszka
2015-01-29  6:46 ` [PATCH v11 06/28] module: Do not inline do_init_module Jan Kiszka
2015-01-29  6:46 ` [PATCH v11 07/28] scripts/gdb: Add automatic symbol reloading on module insertion Jan Kiszka
2015-01-29  6:46 ` [PATCH v11 08/28] scripts/gdb: Add internal helper and convenience function to look up a module Jan Kiszka
2015-01-29  6:46 ` [PATCH v11 09/28] scripts/gdb: Add get_target_endianness helper Jan Kiszka
2015-01-29  6:46 ` [PATCH v11 10/28] scripts/gdb: Add read_u16/32/64 helpers Jan Kiszka
2015-01-29  6:46 ` [PATCH v11 11/28] scripts/gdb: Add lx-dmesg command Jan Kiszka
2015-01-29  6:46 ` Jan Kiszka [this message]
2015-01-29  6:46 ` [PATCH v11 13/28] scripts/gdb: Add helper and convenience function to look up tasks Jan Kiszka
2015-01-29  6:46 ` [PATCH v11 14/28] scripts/gdb: Add is_target_arch helper Jan Kiszka
2015-01-29  6:46 ` [PATCH v11 15/28] scripts/gdb: Add internal helper and convenience function to retrieve thread_info Jan Kiszka
2015-01-29  6:46   ` Jan Kiszka
2015-01-29  6:46 ` [PATCH v11 16/28] scripts/gdb: Add get_gdbserver_type helper Jan Kiszka
2015-01-29  6:46 ` [PATCH v11 17/28] scripts/gdb: Add internal helper and convenience function for per-cpu lookup Jan Kiszka
2015-01-29  6:46   ` Jan Kiszka
2015-01-29  6:46 ` [PATCH v11 18/28] scripts/gdb: Add lx_current convenience function Jan Kiszka
2015-01-29  6:46 ` [PATCH v11 19/28] scripts/gdb: Add class to iterate over CPU masks Jan Kiszka
2015-01-29  6:46 ` [PATCH v11 20/28] scripts/gdb: Add lx-lsmod command Jan Kiszka
2015-01-29  6:46 ` [PATCH v11 21/28] scripts/gdb: Add basic documentation Jan Kiszka
2015-01-29  6:46 ` [PATCH v11 22/28] scripts/gdb: Port to python3 / gdb7.7 Jan Kiszka
2015-01-29  6:46 ` [PATCH v11 23/28] scripts/gdb: Ignore byte-compiled python files Jan Kiszka
2015-01-29 13:15   ` Michal Marek
2015-01-29 13:35     ` Jan Kiszka
2015-01-29 14:34       ` Daniel Thompson
2015-01-29 14:41         ` Jan Kiszka
2015-01-29  6:46 ` [PATCH v11 24/28] scripts/gdb: Use a generator instead of iterator for task list Jan Kiszka
2015-01-29  6:46 ` [PATCH v11 25/28] scripts/gdb: Convert ModuleList to generator function Jan Kiszka
2015-01-29  6:46 ` [PATCH v11 26/28] scripts/gdb: Convert CpuList " Jan Kiszka
2015-01-29  6:46 ` [PATCH v11 27/28] scripts/gdb: Define maintainer Jan Kiszka
2015-01-29  6:46 ` [PATCH v11 28/28] scripts/gdb: Disable pagination while printing from breakpoint handler Jan Kiszka

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=d57d54f83a6e5c7557715dbaf50d2e7351e6b7f6.1422514006.git.jan.kiszka@siemens.com \
    --to=jan.kiszka@siemens.com \
    --cc=akpm@linux-foundation.org \
    --cc=andi@firstfloor.org \
    --cc=ben@bwidawsk.net \
    --cc=bp@suse.de \
    --cc=jason.wessel@windriver.com \
    --cc=kgdb-bugreport@lists.sourceforge.net \
    --cc=linux-kernel@vger.kernel.org \
    --cc=tglx@linutronix.de \
    --cc=tromey@redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.