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 }