summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSteve Dickson <steved@redhat.com>2009-11-17 11:43:01 -0500
committerSteve Dickson <steved@redhat.com>2009-11-17 11:43:01 -0500
commite53853a96bb7f6cf8abf69fcd6645bc2cd9db9d2 (patch)
treea4da3a5e4023f81782f35f426edf7094ed373425
parent7d945a5e61fcae70cf072cea5cbcef4e45d0c92a (diff)
downloadsystemtap-e53853a96bb7f6cf8abf69fcd6645bc2cd9db9d2.tar.gz
systemtap-e53853a96bb7f6cf8abf69fcd6645bc2cd9db9d2.tar.xz
systemtap-e53853a96bb7f6cf8abf69fcd6645bc2cd9db9d2.zip
Added in new tracemarks
Signed-off-by: Steve Dickson <steved@redhat.com>
-rw-r--r--tracemarks/nfs-lookup.mark7
-rw-r--r--tracemarks/nfs_mount.stp52
-rw-r--r--tracemarks/sys_open.tp13
-rw-r--r--tracemarks/tmp.mark3
4 files changed, 75 insertions, 0 deletions
diff --git a/tracemarks/nfs-lookup.mark b/tracemarks/nfs-lookup.mark
new file mode 100644
index 0000000..fa11174
--- /dev/null
+++ b/tracemarks/nfs-lookup.mark
@@ -0,0 +1,7 @@
+probe kernel.mark("nfs_lookup_entry") {
+ printf("kfunc_exit marker hit: dentry %p\n", $arg1)
+}
+
+probe kernel.mark("nfs_lookup_exit") {
+ printf("nfs_lookup_exit return : %d\n", $arg1)
+}
diff --git a/tracemarks/nfs_mount.stp b/tracemarks/nfs_mount.stp
new file mode 100644
index 0000000..b20e920
--- /dev/null
+++ b/tracemarks/nfs_mount.stp
@@ -0,0 +1,52 @@
+%{
+#include <linux/mount.h>
+#include <linux/nfs_mount.h>
+%}
+
+function _fstype_name:string (_fstype:long) %{
+ struct file_system_type *fstype;
+ char *name;
+
+ fstype = (struct file_system_type *)(long)kread(&(THIS->_fstype));
+ name = (char *)(long)kread(&fstype->name);
+
+ snprintf(THIS->__retvalue, MAXSTRINGLEN, "name %s flags 0x%x",
+ name, fstype->fs_flags);
+
+ CATCH_DEREF_FAULT();
+%}
+function _vfsmnt_dump:string (_vfsmnt:long) %{
+ struct vfsmount *vfsmnt;
+ char *dev;
+
+ vfsmnt = (struct vfsmount *)(long)kread(&(THIS->_vfsmnt));
+ dev = (char *)(long)kread(&vfsmnt->mnt_devname);
+
+ snprintf(THIS->__retvalue, MAXSTRINGLEN, "dev %s flags=0x%x",
+ vfsmnt->mnt_devname, vfsmnt->mnt_flags);
+
+ CATCH_DEREF_FAULT();
+%}
+function _nfsmnt_dump:string (_nfsmnt:long) %{
+ struct nfs_mount_data *data;
+ unsigned char *bytes;
+
+ data = (struct nfs_mount_data *)(long)kread(&(THIS->_nfsmnt));
+ bytes = (unsigned char *)&data->addr.sin_addr.s_addr;
+
+ snprintf(THIS->__retvalue, MAXSTRINGLEN,
+ "vers %d flags 0x%x flavor %d hostname %s(%d.%d.%d.%d)",
+ data->version, data->flags, data->pseudoflavor,
+ data->hostname, bytes[0], bytes[1], bytes[2], bytes[3]);
+
+ CATCH_DEREF_FAULT();
+%}
+
+probe kernel.mark("nfs_mount") {
+ printf("nfs_mount:entry: fstype (%s) flags %x dev %s\n",
+ _fstype_name($arg1), $arg2, kernel_string($arg3));
+ printf("\tdata: %s\n\tmnt: %s\n",
+ _nfsmnt_dump($arg4), _vfsmnt_dump($arg5));
+
+}
+
diff --git a/tracemarks/sys_open.tp b/tracemarks/sys_open.tp
new file mode 100644
index 0000000..b99be0e
--- /dev/null
+++ b/tracemarks/sys_open.tp
@@ -0,0 +1,13 @@
+function _d_name:string (_dentry:long) %{ /* pure */
+ struct dentry *dentry = (struct dentry *) kread(&(THIS->_dentry));
+ strlcpy(THIS->__retvalue, dentry->d_name.name, MAXSTRINGLEN);
+
+ CATCH_DEREF_FAULT();
+%}
+
+probe kernel.mark("fs_open") {
+ printf("sys_open: fd %p filename %s\n", $arg1, $arg2);
+
+}
+probe begin { log("starting fs_open probe") }
+probe end { log("ending fs_open probe") }
diff --git a/tracemarks/tmp.mark b/tracemarks/tmp.mark
new file mode 100644
index 0000000..0b3ffa2
--- /dev/null
+++ b/tracemarks/tmp.mark
@@ -0,0 +1,3 @@
+probe kernel.mark("kernel_sched_schedule") {
+ printf("kernel_sched_schedule: pid %d\n", $arg1)
+}