summaryrefslogtreecommitdiffstats
path: root/testsuite/systemtap.samples/iotask2.stp
diff options
context:
space:
mode:
Diffstat (limited to 'testsuite/systemtap.samples/iotask2.stp')
-rw-r--r--testsuite/systemtap.samples/iotask2.stp42
1 files changed, 42 insertions, 0 deletions
diff --git a/testsuite/systemtap.samples/iotask2.stp b/testsuite/systemtap.samples/iotask2.stp
new file mode 100644
index 00000000..1f3248e3
--- /dev/null
+++ b/testsuite/systemtap.samples/iotask2.stp
@@ -0,0 +1,42 @@
+global names, opens, reads, writes
+
+probe begin { log("starting probe") }
+
+probe timer.ms(10000) {
+ log("stopping probe after 10 seconds")
+ exit()
+}
+
+probe kernel.function("sys_open") {
+ e=execname(); names[e]=1
+ opens[e] ++ # simple integer array
+}
+
+probe kernel.function("sys_read") {
+ e=execname(); names[e]=1
+ reads[e] <<< $count # statistics array
+}
+
+probe kernel.function("sys_write") {
+ e=execname(); names[e]=1
+ writes[e] <<< $count # statistics array
+}
+
+
+probe end {
+ foreach (name+ in names) { # sort by name
+ printf("process: %s\n", name)
+ if (opens[name])
+ printf("opens n=%d\n", opens[name])
+ if (@count(reads[name]))
+ printf("reads n=%d, sum=%d, avg=%d\n",
+ @count(reads[name]), # extracting stat results
+ @sum(reads[name]),
+ @avg(reads[name]))
+ if (@count(writes[name]))
+ printf("writes n=%d, sum=%d, avg=%d\n",
+ @count(writes[name]), # extracting stat results
+ @sum(writes[name]),
+ @avg(writes[name]))
+ }
+}