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