diff options
author | Steve Dickson <steved@redhat.com> | 2012-01-23 14:36:28 -0500 |
---|---|---|
committer | Steve Dickson <steved@redhat.com> | 2012-01-23 14:36:28 -0500 |
commit | 1be52c0b9f8ade90aaa5d955ae655d5d9d8d8461 (patch) | |
tree | ae2e00382c407fb34d3ebc68985f1a7d2d45b540 | |
parent | 8dc5f487ec8f810704bdc70191d7b4e71f5f6174 (diff) | |
download | systemtap-1be52c0b9f8ade90aaa5d955ae655d5d9d8d8461.tar.gz systemtap-1be52c0b9f8ade90aaa5d955ae655d5d9d8d8461.tar.xz systemtap-1be52c0b9f8ade90aaa5d955ae655d5d9d8d8461.zip |
Added in new sunrpc sched trace points.
Signed-off-by: Steve Dickson <steved@redhat.com>
-rw-r--r-- | sunrpc/sunrpc.stp | 40 | ||||
-rw-r--r-- | tapset/rpc_clnt.stp | 42 | ||||
-rw-r--r-- | tapset/task.stp | 2 | ||||
-rw-r--r-- | tracepoints/rpc_sched_events.stp | 32 |
4 files changed, 75 insertions, 41 deletions
diff --git a/sunrpc/sunrpc.stp b/sunrpc/sunrpc.stp index 689577c..d94076f 100644 --- a/sunrpc/sunrpc.stp +++ b/sunrpc/sunrpc.stp @@ -1,43 +1,3 @@ -%{ -#include <linux/sunrpc/sched.h> -#include <linux/sunrpc/clnt.h> -%} -function rpcprocnum:long(_msg:long) -%{ - struct rpc_message *msg = (struct rpc_message *)(long) kread(&(THIS->_msg)); - struct rpc_procinfo *rpc_proc = - (struct rpc_procinfo *)(long) kread(&(msg->rpc_proc)); - - THIS->__retvalue = rpc_proc->p_proc; - - CATCH_DEREF_FAULT(); -%} -function rpcprocname:string(_msg:long) -%{ - struct rpc_message *msg = (struct rpc_message *)(long) kread(&(THIS->_msg)); - struct rpc_procinfo *rpc_proc = - (struct rpc_procinfo *)(long) kread(&(msg->rpc_proc)); - char *p_name = kread(&(rpc_proc->p_name)); - char buf[MAXSTRINGLEN]; - - snprintf(THIS->__retvalue, MAXSTRINGLEN, "%s(%d)", - p_name ? p_name : "NULL" , rpc_proc->p_proc); - - CATCH_DEREF_FAULT(); -%} -function rpcprogname:string(_clnt:long) -%{ - struct rpc_clnt *clnt = (struct rpc_clnt *)(long) kread(&(THIS->_clnt)); - char *cl_server = kread(&(clnt->cl_server)); - char *cl_protname = kread(&(clnt->cl_protname)); - char buf[MAXSTRINGLEN]; - - snprintf(THIS->__retvalue, MAXSTRINGLEN, "%s:%s", - cl_server ? cl_server : "NULL" , - cl_protname ? cl_protname : "NULL" ); - - CATCH_DEREF_FAULT(); -%} global syn_clnt, syn_msg, syn_flags global asyn_clnt, asyn_msg, asyn_flags global show_all diff --git a/tapset/rpc_clnt.stp b/tapset/rpc_clnt.stp new file mode 100644 index 0000000..587a67b --- /dev/null +++ b/tapset/rpc_clnt.stp @@ -0,0 +1,42 @@ +%{ +#include <linux/sunrpc/sched.h> +#include <linux/sunrpc/clnt.h> +%} +function rpcprocnum:long(_msg:long) +%{ + struct rpc_message *msg = (struct rpc_message *)(long) kread(&(THIS->_msg)); + struct rpc_procinfo *rpc_proc = + (struct rpc_procinfo *)(long) kread(&(msg->rpc_proc)); + + THIS->__retvalue = rpc_proc->p_proc; + + CATCH_DEREF_FAULT(); +%} +function rpcprocname:string(_msg:long) +%{ + struct rpc_message *msg = (struct rpc_message *)(long) kread(&(THIS->_msg)); + struct rpc_procinfo *rpc_proc = + (struct rpc_procinfo *)(long) kread(&(msg->rpc_proc)); + char *p_name = kread(&(rpc_proc->p_name)); + char buf[MAXSTRINGLEN]; + + snprintf(THIS->__retvalue, MAXSTRINGLEN, "%s(%d)", + p_name ? p_name : "NULL" , rpc_proc->p_proc); + + CATCH_DEREF_FAULT(); +%} +function rpcprogname:string(_clnt:long) +%{ + struct rpc_clnt *clnt = (struct rpc_clnt *)(long) kread(&(THIS->_clnt)); + char *cl_server = kread(&(clnt->cl_server)); + char *cl_protname = kread(&(clnt->cl_protname)); + char buf[MAXSTRINGLEN]; + + snprintf(THIS->__retvalue, MAXSTRINGLEN, "%s:%s(%d)", + cl_server ? cl_server : "NULL" , + cl_protname ? cl_protname : "NULL", + clnt->cl_vers); + + CATCH_DEREF_FAULT(); +%} + diff --git a/tapset/task.stp b/tapset/task.stp index bb74118..f98d7be 100644 --- a/tapset/task.stp +++ b/tapset/task.stp @@ -171,7 +171,7 @@ function cl_server:string(_task:long) %{ struct rpc_task *task = (struct rpc_task *)(long) kread(&(THIS->_task)); struct rpc_clnt *clnt; - char *cl_server; + char *cl_server = NULL; if (task) { clnt = (struct rpc_clnt *)(long) kread(&(task->tk_client)); diff --git a/tracepoints/rpc_sched_events.stp b/tracepoints/rpc_sched_events.stp new file mode 100644 index 0000000..1189f07 --- /dev/null +++ b/tracepoints/rpc_sched_events.stp @@ -0,0 +1,32 @@ +/* + * stap -g -I ../tapset rpc_sched_events.stp + */ +probe kernel.trace("rpc_task_begin") +{ + printf("%s[%d]:%s:%s: %s\n", + execname(), pid(), $$name, rpcprogname($clnt), $$parms); + +} +probe kernel.trace("rpc_task_complete") +{ + printf("%s[%d]:%s:%s: %s\n", + execname(), pid(), $$name, rpcprogname($clnt), $$parms); +} +probe kernel.trace("rpc_task_sleep") +{ + printf("%s[%d]:%s:%s: %s\n", + execname(), pid(), $$name, rpcprogname($clnt), $$parms); +} +probe kernel.trace("rpc_task_wakeup") +{ + printf("%s[%d]:%s:%s: %s\n", + execname(), pid(), $$name, rpcprogname($clnt), $$parms); +} +probe kernel.trace("rpc_task_run_action") +{ + printf("%s[%d]:%s:%s: %s\n", + execname(), pid(), $$name, rpcprogname($clnt), $$parms); +} + +probe begin { log("starting rpc sched events probe") } +probe end { log("ending rpc events events probe") } |