|
|
e4e640 |
From ba62b58974fd25f7281fa151411c8e32b3951fbb Mon Sep 17 00:00:00 2001
|
|
|
e4e640 |
From: Serhei Makarov <smakarov@redhat.com>
|
|
|
e4e640 |
Date: Fri, 2 Nov 2018 12:22:01 -0400
|
|
|
e4e640 |
Subject: [PATCH 18/32] tapset/bpf/task.stp :: rudiment of task tapset
|
|
|
e4e640 |
|
|
|
e4e640 |
---
|
|
|
e4e640 |
tapset/bpf/task.stp | 20 ++++++++++++++++++++
|
|
|
e4e640 |
testsuite/systemtap.bpf/bpf_tests/task1.stp | 15 +++++++++++++++
|
|
|
e4e640 |
2 files changed, 35 insertions(+)
|
|
|
e4e640 |
create mode 100644 tapset/bpf/task.stp
|
|
|
e4e640 |
create mode 100644 testsuite/systemtap.bpf/bpf_tests/task1.stp
|
|
|
e4e640 |
|
|
|
e4e640 |
diff --git a/tapset/bpf/task.stp b/tapset/bpf/task.stp
|
|
|
e4e640 |
new file mode 100644
|
|
|
e4e640 |
index 000000000..9f558a166
|
|
|
e4e640 |
--- /dev/null
|
|
|
e4e640 |
+++ b/tapset/bpf/task.stp
|
|
|
e4e640 |
@@ -0,0 +1,20 @@
|
|
|
e4e640 |
+// task information tapset
|
|
|
e4e640 |
+// Copyright (C) 2018 Red Hat Inc.
|
|
|
e4e640 |
+//
|
|
|
e4e640 |
+// This file is part of systemtap, and is free software. You can
|
|
|
e4e640 |
+// redistribute it and/or modify it under the terms of the GNU General
|
|
|
e4e640 |
+// Public License (GPL); either version 2, or (at your option) any
|
|
|
e4e640 |
+// later version.
|
|
|
e4e640 |
+
|
|
|
e4e640 |
+@__private30 function _task_cur:long()
|
|
|
e4e640 |
+%{ /* bpf */ /* pure */
|
|
|
e4e640 |
+ call, $$, get_current_task;
|
|
|
e4e640 |
+%}
|
|
|
e4e640 |
+
|
|
|
e4e640 |
+/**
|
|
|
e4e640 |
+ * sfunction task_current - The current task_struct of the current task
|
|
|
e4e640 |
+ */
|
|
|
e4e640 |
+function task_current:long () {
|
|
|
e4e640 |
+ // TODO: return & @task(_task_cur())
|
|
|
e4e640 |
+ return & @cast(_task_cur(), "task_struct")
|
|
|
e4e640 |
+}
|
|
|
e4e640 |
diff --git a/testsuite/systemtap.bpf/bpf_tests/task1.stp b/testsuite/systemtap.bpf/bpf_tests/task1.stp
|
|
|
e4e640 |
new file mode 100644
|
|
|
e4e640 |
index 000000000..b0faab361
|
|
|
e4e640 |
--- /dev/null
|
|
|
e4e640 |
+++ b/testsuite/systemtap.bpf/bpf_tests/task1.stp
|
|
|
e4e640 |
@@ -0,0 +1,15 @@
|
|
|
e4e640 |
+probe begin {
|
|
|
e4e640 |
+ printf("BEGIN\n")
|
|
|
e4e640 |
+}
|
|
|
e4e640 |
+
|
|
|
e4e640 |
+probe kernel.function("vfs_read") {
|
|
|
e4e640 |
+ // TODO: PR23816, task.stp tapset
|
|
|
e4e640 |
+ printf("vfs_read by %s", execname())
|
|
|
e4e640 |
+ printf("/%s", kernel_string(@cast(task_current(), "task_struct")->comm))
|
|
|
e4e640 |
+ printf(" PID %d/%d\n", pid(), @cast(task_current(), "task_struct")->tgid)
|
|
|
e4e640 |
+ exit()
|
|
|
e4e640 |
+}
|
|
|
e4e640 |
+
|
|
|
e4e640 |
+probe end {
|
|
|
e4e640 |
+ printf("END PASS\n")
|
|
|
e4e640 |
+}
|
|
|
e4e640 |
--
|
|
|
e4e640 |
2.14.5
|
|
|
e4e640 |
|