diff options
| author | Steve Dickson <steved@redhat.com> | 2009-11-17 11:43:01 -0500 |
|---|---|---|
| committer | Steve Dickson <steved@redhat.com> | 2009-11-17 11:43:01 -0500 |
| commit | e53853a96bb7f6cf8abf69fcd6645bc2cd9db9d2 (patch) | |
| tree | a4da3a5e4023f81782f35f426edf7094ed373425 | |
| parent | 7d945a5e61fcae70cf072cea5cbcef4e45d0c92a (diff) | |
| download | systemtap-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.mark | 7 | ||||
| -rw-r--r-- | tracemarks/nfs_mount.stp | 52 | ||||
| -rw-r--r-- | tracemarks/sys_open.tp | 13 | ||||
| -rw-r--r-- | tracemarks/tmp.mark | 3 |
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) +} |
