1 #!/usr/sbin/dtrace -s
2 /*
3 * This file and its contents are supplied under the terms of the
4 * Common Development and Distribution License ("CDDL"), version 1.0.
5 * You may only use this file in accordance with the terms of version
6 * 1.0 of the CDDL.
7 *
8 * A full copy of the text of the CDDL should have accompanied this
9 * source. A copy of the CDDL is also available via the Internet at
10 * http://www.illumos.org/license/CDDL.
11 */
12
13 /*
14 * Copyright 2014 Nexenta Systems, Inc. All rights reserved.
15 */
16
17 /*
18 * Developer dtrace program for smbsrv
19 * Usage: dtrace -s smbsrv.d
20 */
21
22 #pragma D option flowindent
23
24 self int trace;
25 self int mask;
26
27 /*
28 * Trace almost everything
29 */
30 fbt:smbsrv::entry
31 {
32 self->trace++;
33 }
34
35 /*
36 * If traced and not masked, print entry/return
37 */
38 fbt:smbsrv::entry
39 /self->trace > 0 && self->mask == 0/
40 {
41 printf("\t0x%x", arg0);
42 printf("\t0x%x", arg1);
43 printf("\t0x%x", arg2);
44 printf("\t0x%x", arg3);
45 printf("\t0x%x", arg4);
46 printf("\t0x%x", arg5);
47 }
48
49 /*
50 * Mask (don't print) all function calls below these functions.
51 * These make many boring, repetitive function calls like
52 * smb_mbtowc, mbc_marshal_...
53 */
54 fbt::smb_mbc_vdecodef:entry,
55 fbt::smb_mbc_vencodef:entry,
56 fbt::smb_msgbuf_decode:entry,
57 fbt::smb_msgbuf_encode:entry,
58 fbt::smb_strlwr:entry,
59 fbt::smb_strupr:entry,
60 fbt::smb_wcequiv_strlen:entry
61 {
62 self->mask++;
63 }
64
65 /*
66 * Now inverses of above, unwind order.
67 */
68
69 fbt::smb_mbc_vdecodef:return,
70 fbt::smb_mbc_vencodef:return,
71 fbt::smb_msgbuf_decode:return,
72 fbt::smb_msgbuf_encode:return,
73 fbt::smb_strlwr:return,
74 fbt::smb_strupr:return,
75 fbt::smb_wcequiv_strlen:return
76 {
77 self->mask--;
78 }
79
80 fbt:smbsrv::return
81 /self->trace > 0 && self->mask == 0/
82 {
83 printf("\t0x%x", arg1);
84 }
85
86 fbt:smbsrv::return
87 {
88 self->trace--;
89 }