diff options
| author | Steve Dickson <steved@redhat.com> | 2008-11-21 12:29:33 -0500 |
|---|---|---|
| committer | Steve Dickson <steved@redhat.com> | 2008-11-21 12:29:33 -0500 |
| commit | c6425b809d873bb602e4192e7ccea56653f6a6db (patch) | |
| tree | 83825592e84648c58c00251890d7bdd4f2555f27 /sys_bind | |
| parent | b4e375cf7ab4f309661d548d0169bbdc10504aab (diff) | |
| download | systemtap-c6425b809d873bb602e4192e7ccea56653f6a6db.tar.gz systemtap-c6425b809d873bb602e4192e7ccea56653f6a6db.tar.xz systemtap-c6425b809d873bb602e4192e7ccea56653f6a6db.zip | |
Added sys_bind/inet_bind.stp
Added tracemarks/nfs_mount.trace
Signed-off-by: Steve Dickson <steved@redhat.com>
Diffstat (limited to 'sys_bind')
| -rw-r--r-- | sys_bind/inet_bind.stp | 72 |
1 files changed, 72 insertions, 0 deletions
diff --git a/sys_bind/inet_bind.stp b/sys_bind/inet_bind.stp new file mode 100644 index 0000000..0048791 --- /dev/null +++ b/sys_bind/inet_bind.stp @@ -0,0 +1,72 @@ +%{ +#include <net/sock.h> +#include <linux/in.h> +%} + +function _inet_ntoa:string (_uaddr:long) %{ + struct sockaddr_in *addr; + unsigned char *bytes; + + addr = (struct sockaddr_in *)(long)kread(&THIS->_uaddr); + bytes = (unsigned char *)&addr->sin_addr.s_addr; + + snprintf(THIS->__retvalue, MAXSTRINGLEN, + "%d.%d.%d.%d", bytes[0], bytes[1], bytes[2], bytes[3]); + + CATCH_DEREF_FAULT(); +%} +function _sock_dump:string (_sk:long) %{ + struct sock *sk; + + sk = (struct sock *)(long)kread(&THIS->_sk); + snprintf(THIS->__retvalue, MAXSTRINGLEN, + "reuse %d state %d", sk->sk_reuse, sk->sk_state); + + CATCH_DEREF_FAULT(); +%} + +probe kernel.function("inet_bind") { + if (isinstr(execname(), "rpc.nfsd")) { + printf("inet_bind(%s): sock %p uaddr %s addr_len %d\n", + execname(), $sock, _inet_ntoa($uaddr), $addr_len); + } +} +probe kernel.function("inet_bind").return { + if (isinstr(execname(), "rpc.nfsd")) + printf("inet_bind: return %d (%s)\n", $return, errno_str($return)); +} +probe kernel.function("udp_v4_get_port") { + if (isinstr(execname(), "rpc.nfsd")) { + printf(" udp_v4_get_port(%s): sock %p snum %d\n", + execname(), $sk, $snum); + } +} +probe kernel.function("udp_v4_get_port").return { + if (isinstr(execname(), "rpc.nfsd")) + printf(" udp_v4_get_port: return %d (%s)\n", + $return, errno_str($return)); +} +probe kernel.function("tcp_v4_get_port") { + if (isinstr(execname(), "rpc.nfsd")) { + printf(" tcp_v4_get_port(%s): sock [%s] snum %d\n", + execname(), _sock_dump($sk), $snum); + } +} +probe kernel.function("tcp_v4_get_port").return { + if (isinstr(execname(), "rpc.nfsd")) + printf(" tcp_v4_get_port: return %d (%s)\n", + $return, errno_str($return)); +} +probe kernel.function("inet_csk_bind_conflict") { + if (isinstr(execname(), "rpc.nfsd")) { + printf(" bind_conflict(%s): sock [%s] snum tb %p\n", + execname(), _sock_dump($sk), $tb); + } +} +probe kernel.function("inet_csk_bind_conflict").return { + if (isinstr(execname(), "rpc.nfsd")) + printf(" bind_conflict: return %d (%s)\n", + $return, errno_str($return)); +} +probe begin { log("starting inet_bind probe") } +probe end { log("ending inet_bind probe") } |
