global syn_clnt, syn_msg, syn_flags global asyn_clnt, asyn_msg, asyn_flags global show_all probe module("sunrpc").function("rpc_call_sync") { if (show_all) { printf("%s(%d): rpc_call_sync:%s:%s: flags 0x%x\n", execname(), pid(), rpcprocname($msg), rpcprogname($clnt), $flags); } syn_clnt = $clnt; syn_msg = $msg; syn_flags = $flags; } probe module("sunrpc").function("rpc_call_sync").return { if ($return) { if (rpcprocnum(syn_msg) != 2 && $return != -2) { printf("%s(%d): rpc_call_sync:%s:%s: return %d (%s)\n", execname(), pid(), rpcprocname(syn_msg), rpcprogname(syn_clnt), $return, errno_str($return)); } } } probe module("sunrpc").function("rpc_call_async") { if (show_all) { printf("%s(%d): rpc_call_sync:%s:%s:flags 0x%x\n", execname(), pid(), rpcprocname($msg), rpcprogname($clnt), $flags); } asyn_clnt = $clnt; asyn_msg = $msg; asyn_flags = $flags; } probe module("sunrpc").function("rpc_call_async").return { if ($return) { if (rpcprocnum(asyn_msg) != 2 && $return != -2) { printf("%s(%d): rpc_call_sync:%s:%s: return %d (%s)\n", execname(), pid(), rpcprocname(syn_msg), rpcprogname(syn_clnt), $return, errno_str($return)); } } } probe begin { show_all = 0; if (argc > 0) { if (isinstr(argv[1], "--show_all")) { show_all = 1 } else { error("Usage: sunrpc -- --show_all"); } } log("starting sunrpc probe") } probe end { log("ending sunrpc probe") }