summaryrefslogtreecommitdiffstats
path: root/sunrpc/xprt.stp
blob: 87630a335c91e2cbf80924c896b77878dce3d728 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
global xs_task, trans_task, udp_send_task, sendpages_sock

/*
probe module("sunrpc").function("xs_connect")
{
	//printf("xs_connect: task %p\n", $task);
	//print_backtrace();
}
*/
/*
probe module("sunrpc").function("xs_tcp_connect")
{
	printf("xs_tcp_connect: task %p\n", $task);
	//print_backtrace();
	xs_task = $task;
}
*/
probe module("sunrpc").function("xprt_connect_status")
{
	xs_task = $task;
}
probe module("sunrpc").function("xprt_connect_status").return
{
	tdump = task_dump(xs_task);
	if (isinstr(tdump, "tk_status 0") != 1 && isinstr(tdump, "tk_status -11") != 1)
		printf("xprt_connect_status: %s(%d): %s\n", execname(), pid(), tdump);
}
probe kernel.function("kernel_connect").return
{
	if ($return < 0 && $return != -11 && $return != -115)
		printf("kernel_connect: %s(%d): status %d\n", execname(), pid(), $return);
}
probe module("sunrpc").function("xprt_transmit")
{
	trans_task = $task;
}
probe module("sunrpc").function("xprt_transmit").return
{
	if (task_status(trans_task) && task_status(trans_task) != -11)
		printf("xprt_transmit: %s(%d): %s\n\t%s\n", execname(), pid(), 
			task_dump(trans_task), xprt_dump(trans_task));
}
probe module("sunrpc").function("xs_tcp_send_request").return
{
	if ($return < 0 && $return != -11)
		printf("xs_tcp_send_request: %s(%d): status %d (%s)\n", execname(), pid(), 
			$return, errno_str($return));
}
probe module("sunrpc").function("xs_sendpages")
{
	sendpages_sock = $sock
}
probe module("sunrpc").function("xs_sendpages").return
{
	if ($return < 0 && $return != -11)
		printf("xs_sendpages: %s(%d): sock %p status %d (%s)\n", execname(), pid(),
			sendpages_sock, $return, errno_str($return));
}
probe module("sunrpc").function("xs_send_kvec").return
{
	if ($return < 0 && $return != -11)
		printf("xs_send_kvec: %s(%d): status %d (%s)\n", execname(), pid(),
			$return, errno_str($return));
}
/*
probe module("sunrpc").function("xs_send_pagedata").return
{
	if ($return < 0)
		printf("xs_send_pagedata: %s(%d): status %d (%s)\n", execname(), pid(),
			$return, errno_str($return));
}
*/
probe kernel.function("kernel_sendmsg").return
{
	if ($return < 0 && $return != -11)
		printf("kernel_sendmsg: %s(%d): status %d (%s)\n", execname(), pid(),
			$return, errno_str($return));
}
/*
probe module("sunrpc").function("xs_udp_send_request")
{
	printf("xs_udp_send_request: task %p\n", $task);
	udp_send_task = $task;
}
probe module("sunrpc").function("xs_udp_send_request").return
{
	if ($return)
		printf("xs_udp_send_request: %d (%s)\n", $return, errno_str($return));
}
probe module("sunrpc").function("xs_bind4").return
{
	printf("xs_bind4: %d %s\n", $return, errno_str($return));
}
*/
probe begin { log("starting xprt probe") }
probe end { log("ending xprt probe") }