[PATCH 4/4] Convert the various systemtap examples to use the syscall any tapset

William Cohen wcohen@redhat.com
Fri Sep 21 14:56:00 GMT 2018


To make the examples cleaner use the new syscall any tapset.  This avoids
exposing the systemtap internal function _stp_syscall_nr() and makes the
instrumentation look a bit more like the traditional syscall.* probe points.
---
 testsuite/systemtap.examples/general/eventcount.meta   |  2 +-
 testsuite/systemtap.examples/general/stopwatches.stp   |  4 ++--
 .../systemtap.examples/lwtools/syscallbypid-nd.stp     |  3 +--
 .../systemtap.examples/process/syscalls_by_pid.stp     |  2 +-
 .../systemtap.examples/process/syscalls_by_proc.stp    |  2 +-
 testsuite/systemtap.examples/process/syscalltimes      |  7 +++----
 .../systemtap.examples/process/thread-business.stp     |  4 ++--
 .../systemtap.examples/profiling/container_check.stp   |  7 +++----
 testsuite/systemtap.examples/profiling/errno.stp       |  5 ++---
 .../profiling/syscallerrorsbypid.stp                   | 10 +++++-----
 .../systemtap.examples/profiling/syscalllatency.stp    |  6 +++---
 .../systemtap.examples/profiling/syscallsbypid.stp     |  4 ++--
 testsuite/systemtap.examples/profiling/topsys.stp      |  3 +--
 13 files changed, 27 insertions(+), 32 deletions(-)

diff --git a/testsuite/systemtap.examples/general/eventcount.meta b/testsuite/systemtap.examples/general/eventcount.meta
index 6567a3ea5..cd0dd0df8 100644
--- a/testsuite/systemtap.examples/general/eventcount.meta
+++ b/testsuite/systemtap.examples/general/eventcount.meta
@@ -10,4 +10,4 @@ output: batch on-exit
 scope: system-wide
 description: The script periodically prints a count of specified events and their related tid's over the course of execution. Numerous configuration options exist to control filtering / reporting, some of which can be modified at runtime. See the script source for more information.
 test_check: stap -p4 eventcount.stp
-test_installcheck: stap eventcount.stp 'kernel.trace("sys_enter")' -c 'sleep 3'
+test_installcheck: stap eventcount.stp 'syscall_any' -c 'sleep 3'
diff --git a/testsuite/systemtap.examples/general/stopwatches.stp b/testsuite/systemtap.examples/general/stopwatches.stp
index 8c28f3a5f..23e96a719 100755
--- a/testsuite/systemtap.examples/general/stopwatches.stp
+++ b/testsuite/systemtap.examples/general/stopwatches.stp
@@ -12,14 +12,14 @@ probe begin
   stop_stopwatch("system")
 }
 
-probe kernel.trace("sys_enter")
+probe syscall_any
 {
   if (pid() != target()) next
   stop_stopwatch("user")
   start_stopwatch("system")
 }
 
-probe kernel.trace("sys_exit")
+probe syscall_any.return
 {
   if (pid() != target()) next
   start_stopwatch("user")
diff --git a/testsuite/systemtap.examples/lwtools/syscallbypid-nd.stp b/testsuite/systemtap.examples/lwtools/syscallbypid-nd.stp
index 4ed64908c..f1f4f6e3c 100755
--- a/testsuite/systemtap.examples/lwtools/syscallbypid-nd.stp
+++ b/testsuite/systemtap.examples/lwtools/syscallbypid-nd.stp
@@ -27,9 +27,8 @@ probe begin
 	printf("Tracing syscall completions... Hit Ctrl-C to end.\n");
 }
 
-probe kernel.trace("sys_exit")
+probe syscall_any.return
 {
-	name = syscall_name(_stp_syscall_nr())
 	num[pid(), execname(), name] <<< 1;
 }
 
diff --git a/testsuite/systemtap.examples/process/syscalls_by_pid.stp b/testsuite/systemtap.examples/process/syscalls_by_pid.stp
index 5cf64be12..adef67537 100755
--- a/testsuite/systemtap.examples/process/syscalls_by_pid.stp
+++ b/testsuite/systemtap.examples/process/syscalls_by_pid.stp
@@ -17,7 +17,7 @@ probe begin {
   print ("Collecting data... Type Ctrl-C to exit and display results\n")
 }
 
-probe kernel.trace("sys_enter") {
+probe syscall_any {
   syscalls[pid()]++
 }
 
diff --git a/testsuite/systemtap.examples/process/syscalls_by_proc.stp b/testsuite/systemtap.examples/process/syscalls_by_proc.stp
index dcf480611..941da9ae0 100755
--- a/testsuite/systemtap.examples/process/syscalls_by_proc.stp
+++ b/testsuite/systemtap.examples/process/syscalls_by_proc.stp
@@ -18,7 +18,7 @@ probe begin {
   print ("Collecting data... Type Ctrl-C to exit and display results\n")
 }
 
-probe kernel.trace("sys_enter") {
+probe syscall_any {
   syscalls[execname()]++
 }
 
diff --git a/testsuite/systemtap.examples/process/syscalltimes b/testsuite/systemtap.examples/process/syscalltimes
index 08d11ea99..a0b356e06 100755
--- a/testsuite/systemtap.examples/process/syscalltimes
+++ b/testsuite/systemtap.examples/process/syscalltimes
@@ -138,12 +138,11 @@ probe begin {
 	}
 }
 
-probe kernel.trace("sys_enter") {
-	starttime[syscall_name($id), tid()] = gettimeofday_ns()
+probe syscall_any {
+	starttime[name, tid()] = gettimeofday_ns()
 }
 
-probe kernel.trace("sys_exit") {
-	name = syscall_name(_stp_syscall_nr())
+probe syscall_any.return {
 	# Skip if we have not seen this before
 	if (!([name, tid()] in starttime)) next
 
diff --git a/testsuite/systemtap.examples/process/thread-business.stp b/testsuite/systemtap.examples/process/thread-business.stp
index 71aa5b8b6..e25bb125e 100755
--- a/testsuite/systemtap.examples/process/thread-business.stp
+++ b/testsuite/systemtap.examples/process/thread-business.stp
@@ -6,10 +6,10 @@ global activity2          // [execname,tid]->syscall-name-string-history
 global syscall_history_length = 50 // override with stap -Gsyscall_history_length=NNN
 global top_threads = 20
 
-probe kernel.trace("sys_enter") # use syscall tracepoint; we don't need context data
+probe syscall_any # use tracepoint based syscall_any; we don't need context data
 {
   activity[execname(),tid()]<<<1
-  history = syscall_name($id)." ".activity2[execname(),tid()]
+  history = name." ".activity2[execname(),tid()]
   activity2[execname(),tid()] = substr(history,0,syscall_history_length)
 }
 
diff --git a/testsuite/systemtap.examples/profiling/container_check.stp b/testsuite/systemtap.examples/profiling/container_check.stp
index 882b6582c..1c34f689d 100755
--- a/testsuite/systemtap.examples/profiling/container_check.stp
+++ b/testsuite/systemtap.examples/profiling/container_check.stp
@@ -146,8 +146,7 @@ probe ns_capable !, capable
     cap_use[tid()] |= cap
 }
 
-probe kernel.trace("sys_exit") {
-  name = syscall_name(_stp_syscall_nr())
+probe syscall_any.return {
   # note any problem capabilities use during syscall
   cap = cap_use[tid()]
   if (cap && child_of_target(task_current())) {
@@ -162,8 +161,8 @@ probe kernel.trace("sys_exit") {
   }
 
   # note any syscalls returning errors
-  if ($ret < 0 && child_of_target(task_current())) {
-    syscall_errno[execname(), name, $ret] <<< 1
+  if (retval < 0 && child_of_target(task_current())) {
+    syscall_errno[execname(), name, retval] <<< 1
   }
 }
 
diff --git a/testsuite/systemtap.examples/profiling/errno.stp b/testsuite/systemtap.examples/profiling/errno.stp
index 9137e31f6..991d5104c 100755
--- a/testsuite/systemtap.examples/profiling/errno.stp
+++ b/testsuite/systemtap.examples/profiling/errno.stp
@@ -11,9 +11,8 @@
 
 global execname, errors
 
-probe kernel.trace("sys_exit") {
-  name = syscall_name(_stp_syscall_nr())
-  errno = $ret
+probe syscall_any.return {
+  errno = retval
   if ( errno < 0 ) {
     p = pid()
     execname[p]=execname();
diff --git a/testsuite/systemtap.examples/profiling/syscallerrorsbypid.stp b/testsuite/systemtap.examples/profiling/syscallerrorsbypid.stp
index db97175f9..fafe3e6d0 100755
--- a/testsuite/systemtap.examples/profiling/syscallerrorsbypid.stp
+++ b/testsuite/systemtap.examples/profiling/syscallerrorsbypid.stp
@@ -13,12 +13,12 @@
 global arr%[20000], sys%[20000]
 global procname%
       
-probe kernel.trace("sys_enter") {
-  sys[tid()] = $id
+probe syscall_any {
+  sys[tid()] = syscall_nr
 }
-probe kernel.trace("sys_exit") {
-    if (tid() in sys && $ret < 0 ) {
-       arr[pid(), sys[tid()], $ret]++
+probe syscall_any.return {
+    if (tid() in sys && retval < 0 ) {
+       arr[pid(), sys[tid()], retval]++
        procname[pid()] = execname()
     }
     delete sys[tid()]
diff --git a/testsuite/systemtap.examples/profiling/syscalllatency.stp b/testsuite/systemtap.examples/profiling/syscalllatency.stp
index f0cf2fddb..cda03270d 100755
--- a/testsuite/systemtap.examples/profiling/syscalllatency.stp
+++ b/testsuite/systemtap.examples/profiling/syscalllatency.stp
@@ -12,11 +12,11 @@
 
 global arr%[20000], sys%[20000], entry_time%[20000]
 
-probe kernel.trace("sys_enter") {
+probe syscall_any {
     entry_time[tid()] = gettimeofday_ns();
-    sys[tid()] = $id
+    sys[tid()] = syscall_nr
 }
-probe kernel.trace("sys_exit") {
+probe syscall_any.return {
     et = entry_time[tid()]
     id = sys[tid()]
     delete entry_time[tid()]
diff --git a/testsuite/systemtap.examples/profiling/syscallsbypid.stp b/testsuite/systemtap.examples/profiling/syscallsbypid.stp
index 9b1af01a1..b59491e88 100755
--- a/testsuite/systemtap.examples/profiling/syscallsbypid.stp
+++ b/testsuite/systemtap.examples/profiling/syscallsbypid.stp
@@ -13,8 +13,8 @@
 global arr%[20000]
 global procname%
       
-probe kernel.trace("sys_enter") {
-  arr[pid(), $id]++
+probe syscall_any {
+  arr[pid(), syscall_nr]++
   procname[pid()] = execname()
 }
 
diff --git a/testsuite/systemtap.examples/profiling/topsys.stp b/testsuite/systemtap.examples/profiling/topsys.stp
index 08bcf0366..cf0b122aa 100755
--- a/testsuite/systemtap.examples/profiling/topsys.stp
+++ b/testsuite/systemtap.examples/profiling/topsys.stp
@@ -6,8 +6,7 @@
 
 global syscalls_count
 
-probe kernel.trace("sys_enter") {
-  name = syscall_name($id)
+probe syscall_any {
   syscalls_count[name] <<< 1
 }
 
-- 
2.17.1



More information about the Systemtap mailing list