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 13/28] scripts/gdb: Add helper and convenience function to look up tasks
Date: Thu, 29 Jan 2015 07:46:32 +0100	[thread overview]
Message-ID: <2ef2e5cb4a2df0849932ad8d33f21a35bbc2a361.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>

Add the helper task_by_pid that can look up a task by its PID. Also
export it as a convenience function.

Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
---
 scripts/gdb/linux/tasks.py | 27 +++++++++++++++++++++++++++
 scripts/gdb/vmlinux-gdb.py |  1 +
 2 files changed, 28 insertions(+)

diff --git a/scripts/gdb/linux/tasks.py b/scripts/gdb/linux/tasks.py
index cd25984..13bb97c 100644
--- a/scripts/gdb/linux/tasks.py
+++ b/scripts/gdb/linux/tasks.py
@@ -44,3 +44,30 @@ class TaskList:
                 utils.container_of(t['thread_group']['next'],
                                    self.task_ptr_type, "thread_group")
         return t
+
+
+def get_task_by_pid(pid):
+    for task in TaskList():
+        if int(task['pid']) == pid:
+            return task
+    return None
+
+
+class LxTaskByPidFunc(gdb.Function):
+    """Find Linux task by PID and return the task_struct variable.
+
+$lx_task_by_pid(PID): Given PID, iterate over all tasks of the target and
+return that task_struct variable which PID matches."""
+
+    def __init__(self):
+        super(LxTaskByPidFunc, self).__init__("lx_task_by_pid")
+
+    def invoke(self, pid):
+        task = get_task_by_pid(pid)
+        if task:
+            return task.dereference()
+        else:
+            raise gdb.GdbError("No task of PID " + str(pid))
+
+
+LxTaskByPidFunc()
diff --git a/scripts/gdb/vmlinux-gdb.py b/scripts/gdb/vmlinux-gdb.py
index fa66d23..4d7eb2c 100644
--- a/scripts/gdb/vmlinux-gdb.py
+++ b/scripts/gdb/vmlinux-gdb.py
@@ -26,3 +26,4 @@ else:
     import linux.symbols
     import linux.modules
     import linux.dmesg
+    import linux.tasks
-- 
2.1.4


  parent reply	other threads:[~2015-01-29  7:13 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 ` [PATCH v11 12/28] scripts/gdb: Add task iteration class Jan Kiszka
2015-01-29  6:46 ` Jan Kiszka [this message]
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=2ef2e5cb4a2df0849932ad8d33f21a35bbc2a361.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.