Commit 47528710 authored by Jan Kiszka's avatar Jan Kiszka Committed by Linus Torvalds

scripts/gdb: add helper and convenience function to look up tasks

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: 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 7704d58a
...@@ -44,3 +44,30 @@ class TaskList: ...@@ -44,3 +44,30 @@ class TaskList:
utils.container_of(t['thread_group']['next'], utils.container_of(t['thread_group']['next'],
self.task_ptr_type, "thread_group") self.task_ptr_type, "thread_group")
return t 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()
...@@ -26,3 +26,4 @@ else: ...@@ -26,3 +26,4 @@ else:
import linux.symbols import linux.symbols
import linux.modules import linux.modules
import linux.dmesg import linux.dmesg
import linux.tasks
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment