summaryrefslogtreecommitdiffstats
path: root/testsuite/systemtap.examples/general
diff options
context:
space:
mode:
authorddomingo <ddomingo@redhat.com>2008-10-28 16:02:01 +1000
committerddomingo <ddomingo@redhat.com>2008-10-28 16:02:01 +1000
commited70d5b028bf8af776380deda5e6a75857c41c28 (patch)
tree456651dd247da3d1fe13fb20f89d5b59a50f212e /testsuite/systemtap.examples/general
parent53b9e09f0b30e4f53ec492b345cbd1ab85afe929 (diff)
parent1a58bf9838378cdab17c2071794a12463007270a (diff)
downloadsystemtap-steved-ed70d5b028bf8af776380deda5e6a75857c41c28.tar.gz
systemtap-steved-ed70d5b028bf8af776380deda5e6a75857c41c28.tar.xz
systemtap-steved-ed70d5b028bf8af776380deda5e6a75857c41c28.zip
re-committing all work for today, resolving conflicts earlier
Diffstat (limited to 'testsuite/systemtap.examples/general')
-rw-r--r--testsuite/systemtap.examples/general/inodewatch-simple.stp11
-rw-r--r--testsuite/systemtap.examples/general/inodewatch2-simple.stp12
-rw-r--r--testsuite/systemtap.examples/general/para-callgraph-simple.meta7
-rwxr-xr-xtestsuite/systemtap.examples/general/para-callgraph-simple.stp40
4 files changed, 70 insertions, 0 deletions
diff --git a/testsuite/systemtap.examples/general/inodewatch-simple.stp b/testsuite/systemtap.examples/general/inodewatch-simple.stp
new file mode 100644
index 00000000..5f81008d
--- /dev/null
+++ b/testsuite/systemtap.examples/general/inodewatch-simple.stp
@@ -0,0 +1,11 @@
+probe kernel.function ("vfs_write"),
+ kernel.function ("vfs_read")
+{
+ dev_nr = $file->f_dentry->d_inode->i_sb->s_dev
+ inode_nr = $file->f_dentry->d_inode->i_ino
+ if (dev_nr == ($1 << 20 | $2) # major/minor device
+ && inode_nr == $3)
+ printf ("%s(%d) %s 0x%x/%u\n",
+ execname(), pid(), probefunc(), dev_nr, inode_nr)
+}
+ stap -p4 para-callgraph.stp sys_read '*@fs/*.c'
diff --git a/testsuite/systemtap.examples/general/inodewatch2-simple.stp b/testsuite/systemtap.examples/general/inodewatch2-simple.stp
new file mode 100644
index 00000000..4fea18e6
--- /dev/null
+++ b/testsuite/systemtap.examples/general/inodewatch2-simple.stp
@@ -0,0 +1,12 @@
+global ATTR_MODE = 1
+
+probe kernel.function("inode_setattr") {
+ dev_nr = $inode->i_sb->s_dev
+ inode_nr = $inode->i_ino
+
+ if (dev_nr == ($1 << 20 | $2) # major/minor device
+ && inode_nr == $3
+ && $attr->ia_valid & ATTR_MODE)
+ printf ("%s(%d) %s 0x%x/%u %o %d\n",
+ execname(), pid(), probefunc(), dev_nr, inode_nr, $attr->ia_mode, uid())
+}
diff --git a/testsuite/systemtap.examples/general/para-callgraph-simple.meta b/testsuite/systemtap.examples/general/para-callgraph-simple.meta
new file mode 100644
index 00000000..4a0bb251
--- /dev/null
+++ b/testsuite/systemtap.examples/general/para-callgraph-simple.meta
@@ -0,0 +1,7 @@
+title: Callgraph tracing with arguments
+name: para-callgraph.stp
+keywords: trace callgraph
+subsystem: general
+description: Print a timed per-thread callgraph, complete with function parameters and return values. The first parameter names the function probe points to trace. The optional second parameter names the probe points for trigger functions, which acts to enable tracing for only those functions that occur while the current thread is nested within the trigger.
+test_check: stap -p4 para-callgraph.stp sys_read '*@fs/*.c'
+test_installcheck: TBD
diff --git a/testsuite/systemtap.examples/general/para-callgraph-simple.stp b/testsuite/systemtap.examples/general/para-callgraph-simple.stp
new file mode 100755
index 00000000..17cf50a5
--- /dev/null
+++ b/testsuite/systemtap.examples/general/para-callgraph-simple.stp
@@ -0,0 +1,40 @@
+function trace(entry_p) {
+ if(tid() in trace)
+ printf("%s%s%s\n",thread_indent(entry_p),
+ (entry_p>0?"->":"<-"),
+ probefunc())
+}
+
+global trace
+probe kernel.function(@1).call {
+ if (execname() == "stapio") next # skip our own helper process
+ trace[tid()] = 1
+ trace(1)
+}
+probe kernel.function(@1).return {
+ trace(-1)
+ delete trace[tid()]
+}
+
+probe kernel.function(@2).call { trace(1) }
+probe kernel.function(@2).return { trace(-1) }
+function trace(entry_p) {
+ if(tid() in trace)
+ printf("%s%s%s\n",thread_indent(entry_p),
+ (entry_p>0?"->":"<-"),
+ probefunc())
+}
+
+global trace
+probe kernel.function(@1).call {
+ if (execname() == "stapio") next # skip our own helper process
+ trace[tid()] = 1
+ trace(1)
+}
+probe kernel.function(@1).return {
+ trace(-1)
+ delete trace[tid()]
+}
+
+probe kernel.function(@2).call { trace(1) }
+probe kernel.function(@2).return { trace(-1) }