1 /*
2  * This file and its contents are supplied under the terms of the
3  * Common Development and Distribution License ("CDDL"), version 1.0.
4  * You may only use this file in accordance with the terms of version
5  * 1.0 of the CDDL.
6  *
7  * A full copy of the text of the CDDL should have accompanied this
8  * source.  A copy of the CDDL is also available via the Internet at
9  * http://www.illumos.org/license/CDDL.
10  */
11 
12 /*
13  * Copyright 2017 Nexenta Systems, Inc.  All rights reserved.
14  */
15 
16 /*
17  * Example using the "fksmb$pid" dtrace provider.
18  * Traces all SMB commands using the probes:
19  *	start, done
20  * all of which have two args:
21  *	args[0]: char * (probe-name)
22  *	args[1]: ulong (struct smb_request *)
23  *
24  * Note: the "userland" type classifier causes dtrace to
25  * automatically copyin the struct for us.  (Nice!)
26  */
27 
28 fksmb$target:::smb_start
29 {
30 	this->pn = copyinstr(arg0);
31 	this->sr = (userland pid`smb_request_t *)arg1;
32 
33 	printf(" %s mid=0x%x uid=0x%x tid=0x%x\n",
34 	    this->pn,
35 	    this->sr->smb_mid,
36 	    this->sr->smb_uid,
37 	    this->sr->smb_tid);
38 }
39 
40 fksmb$target:::smb_done
41 {
42 	this->pn = copyinstr(arg0);
43 	this->sr = (userland pid`smb_request_t *)arg1;
44 
45 	printf(" %s mid=0x%x status=0x%x\n",
46 	    this->pn,
47 	    this->sr->smb_mid,
48 	    this->sr->smb_error.status);
49 }
50 
51 fksmb$target:::smb2_start
52 {
53 	this->pn = copyinstr(arg0);
54 	this->sr = (userland pid`smb_request_t *)arg1;
55 
56 	printf(" %s mid=0x%x uid=0x%x tid=0x%x\n",
57 	    this->pn,
58 	    this->sr->smb2_messageid,
59 	    this->sr->smb2_ssnid,
60 	    this->sr->smb_tid);
61 }
62 
63 fksmb$target:::smb2_done
64 {
65 	this->pn = copyinstr(arg0);
66 	this->sr = (userland pid`smb_request_t *)arg1;
67 
68 	printf(" %s mid=0x%x status=0x%x\n",
69 	    this->pn,
70 	    this->sr->smb2_messageid,
71 	    this->sr->smb2_status);
72 }
73