summaryrefslogtreecommitdiffstats
path: root/testsuite/semok/eleven.stp
diff options
context:
space:
mode:
Diffstat (limited to 'testsuite/semok/eleven.stp')
-rwxr-xr-xtestsuite/semok/eleven.stp38
1 files changed, 38 insertions, 0 deletions
diff --git a/testsuite/semok/eleven.stp b/testsuite/semok/eleven.stp
new file mode 100755
index 00000000..bcfa4222
--- /dev/null
+++ b/testsuite/semok/eleven.stp
@@ -0,0 +1,38 @@
+#! stap -p2
+
+global entry_time, my_count, my_fd, read_times
+
+# future built-ins
+function string (v) { return "" }
+function hexstring (v) { return "" }
+function trace (s) { return 0 }
+
+probe kernel.syscall("read") {
+ $count=0 $timestamp=0 $fd=0
+
+ thread->entry_time = $timestamp # "macro" variable
+ thread->my_count = $count # function argument
+ thread->my_fd = $fd # function argument
+ trace ("my_count = " . string(thread->my_count) .
+ "my_fd = " . string(thread->my_fd))
+}
+
+probe kernel.syscall("read").return {
+ $syscall_name="" $retvalue=0
+
+ if (thread->entry_time) {
+ read_times[$syscall_name] # variable from provider alias
+ += $timestamp - thread->entry_time
+ }
+ trace ("syscall " . $syscall_name .
+ " return value = " .
+ hexstring ($retvalue)) # function pseudo-argument
+}
+
+probe end {
+ foreach (syscall in read_times) {
+ trace ("syscall " . syscall .
+ " total-time=" . string (read_times[syscall]))
+ }
+}
+