18f0e65c9SRick Macklem /*- 2*4d846d26SWarner Losh * SPDX-License-Identifier: BSD-2-Clause 3d63027b6SPedro F. Giffuni * 48f0e65c9SRick Macklem * Copyright (c) 2009 Robert N. M. Watson 58f0e65c9SRick Macklem * All rights reserved. 68f0e65c9SRick Macklem * 78f0e65c9SRick Macklem * This software was developed at the University of Cambridge Computer 88f0e65c9SRick Macklem * Laboratory with support from a grant from Google, Inc. 98f0e65c9SRick Macklem * 108f0e65c9SRick Macklem * Redistribution and use in source and binary forms, with or without 118f0e65c9SRick Macklem * modification, are permitted provided that the following conditions 128f0e65c9SRick Macklem * are met: 138f0e65c9SRick Macklem * 1. Redistributions of source code must retain the above copyright 148f0e65c9SRick Macklem * notice, this list of conditions and the following disclaimer. 158f0e65c9SRick Macklem * 2. Redistributions in binary form must reproduce the above copyright 168f0e65c9SRick Macklem * notice, this list of conditions and the following disclaimer in the 178f0e65c9SRick Macklem * documentation and/or other materials provided with the distribution. 188f0e65c9SRick Macklem * 198f0e65c9SRick Macklem * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 208f0e65c9SRick Macklem * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 218f0e65c9SRick Macklem * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 228f0e65c9SRick Macklem * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 238f0e65c9SRick Macklem * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 248f0e65c9SRick Macklem * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 258f0e65c9SRick Macklem * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 268f0e65c9SRick Macklem * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 278f0e65c9SRick Macklem * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 288f0e65c9SRick Macklem * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 298f0e65c9SRick Macklem * SUCH DAMAGE. 308f0e65c9SRick Macklem */ 318f0e65c9SRick Macklem 328f0e65c9SRick Macklem #ifndef _NFSCL_NFS_KDTRACE_H_ 338f0e65c9SRick Macklem #define _NFSCL_NFS_KDTRACE_H_ 348f0e65c9SRick Macklem 358f0e65c9SRick Macklem /* 368f0e65c9SRick Macklem * Definitions for NFS access cache probes. 378f0e65c9SRick Macklem */ 388f0e65c9SRick Macklem extern uint32_t nfscl_accesscache_flush_done_id; 398f0e65c9SRick Macklem extern uint32_t nfscl_accesscache_get_hit_id; 408f0e65c9SRick Macklem extern uint32_t nfscl_accesscache_get_miss_id; 418f0e65c9SRick Macklem extern uint32_t nfscl_accesscache_load_done_id; 420d8dc7ccSSergey Kandaurov 43285e7a2dSGleb Smirnoff /* 44285e7a2dSGleb Smirnoff * Definitions for NFS attribute cache probes. 45285e7a2dSGleb Smirnoff */ 46285e7a2dSGleb Smirnoff extern uint32_t nfscl_attrcache_flush_done_id; 47285e7a2dSGleb Smirnoff extern uint32_t nfscl_attrcache_get_hit_id; 48285e7a2dSGleb Smirnoff extern uint32_t nfscl_attrcache_get_miss_id; 49285e7a2dSGleb Smirnoff extern uint32_t nfscl_attrcache_load_done_id; 50285e7a2dSGleb Smirnoff 51285e7a2dSGleb Smirnoff #ifdef KDTRACE_HOOKS 52285e7a2dSGleb Smirnoff #include <sys/dtrace_bsd.h> 538f0e65c9SRick Macklem 548f0e65c9SRick Macklem #define KDTRACE_NFS_ACCESSCACHE_FLUSH_DONE(vp) do { \ 558f0e65c9SRick Macklem if (dtrace_nfscl_accesscache_flush_done_probe != NULL) \ 568f0e65c9SRick Macklem (dtrace_nfscl_accesscache_flush_done_probe)( \ 578f0e65c9SRick Macklem nfscl_accesscache_flush_done_id, (vp)); \ 588f0e65c9SRick Macklem } while (0) 598f0e65c9SRick Macklem 608f0e65c9SRick Macklem #define KDTRACE_NFS_ACCESSCACHE_GET_HIT(vp, uid, mode) do { \ 618f0e65c9SRick Macklem if (dtrace_nfscl_accesscache_get_hit_probe != NULL) \ 628f0e65c9SRick Macklem (dtrace_nfscl_accesscache_get_hit_probe)( \ 638f0e65c9SRick Macklem nfscl_accesscache_get_hit_id, (vp), (uid), \ 648f0e65c9SRick Macklem (mode)); \ 658f0e65c9SRick Macklem } while (0) 668f0e65c9SRick Macklem 678f0e65c9SRick Macklem #define KDTRACE_NFS_ACCESSCACHE_GET_MISS(vp, uid, mode) do { \ 688f0e65c9SRick Macklem if (dtrace_nfscl_accesscache_get_miss_probe != NULL) \ 698f0e65c9SRick Macklem (dtrace_nfscl_accesscache_get_miss_probe)( \ 708f0e65c9SRick Macklem nfscl_accesscache_get_miss_id, (vp), (uid), \ 718f0e65c9SRick Macklem (mode)); \ 728f0e65c9SRick Macklem } while (0) 738f0e65c9SRick Macklem 748f0e65c9SRick Macklem #define KDTRACE_NFS_ACCESSCACHE_LOAD_DONE(vp, uid, rmode, error) do { \ 758f0e65c9SRick Macklem if (dtrace_nfscl_accesscache_load_done_probe != NULL) \ 768f0e65c9SRick Macklem (dtrace_nfscl_accesscache_load_done_probe)( \ 778f0e65c9SRick Macklem nfscl_accesscache_load_done_id, (vp), (uid), \ 788f0e65c9SRick Macklem (rmode), (error)); \ 798f0e65c9SRick Macklem } while (0) 808f0e65c9SRick Macklem 818f0e65c9SRick Macklem #define KDTRACE_NFS_ATTRCACHE_FLUSH_DONE(vp) do { \ 828f0e65c9SRick Macklem if (dtrace_nfscl_attrcache_flush_done_probe != NULL) \ 838f0e65c9SRick Macklem (dtrace_nfscl_attrcache_flush_done_probe)( \ 848f0e65c9SRick Macklem nfscl_attrcache_flush_done_id, (vp)); \ 858f0e65c9SRick Macklem } while (0) 868f0e65c9SRick Macklem 878f0e65c9SRick Macklem #define KDTRACE_NFS_ATTRCACHE_GET_HIT(vp, vap) do { \ 888f0e65c9SRick Macklem if (dtrace_nfscl_attrcache_get_hit_probe != NULL) \ 898f0e65c9SRick Macklem (dtrace_nfscl_attrcache_get_hit_probe)( \ 908f0e65c9SRick Macklem nfscl_attrcache_get_hit_id, (vp), (vap)); \ 918f0e65c9SRick Macklem } while (0) 928f0e65c9SRick Macklem 938f0e65c9SRick Macklem #define KDTRACE_NFS_ATTRCACHE_GET_MISS(vp) do { \ 948f0e65c9SRick Macklem if (dtrace_nfscl_attrcache_get_miss_probe != NULL) \ 958f0e65c9SRick Macklem (dtrace_nfscl_attrcache_get_miss_probe)( \ 968f0e65c9SRick Macklem nfscl_attrcache_get_miss_id, (vp)); \ 978f0e65c9SRick Macklem } while (0) 988f0e65c9SRick Macklem 998f0e65c9SRick Macklem #define KDTRACE_NFS_ATTRCACHE_LOAD_DONE(vp, vap, error) do { \ 1008f0e65c9SRick Macklem if (dtrace_nfscl_attrcache_load_done_probe != NULL) \ 1018f0e65c9SRick Macklem (dtrace_nfscl_attrcache_load_done_probe)( \ 1028f0e65c9SRick Macklem nfscl_attrcache_load_done_id, (vp), (vap), \ 1038f0e65c9SRick Macklem (error)); \ 1048f0e65c9SRick Macklem } while (0) 1058f0e65c9SRick Macklem 1068f0e65c9SRick Macklem #else /* !KDTRACE_HOOKS */ 1078f0e65c9SRick Macklem 1088f0e65c9SRick Macklem #define KDTRACE_NFS_ACCESSCACHE_FLUSH_DONE(vp) 1098f0e65c9SRick Macklem #define KDTRACE_NFS_ACCESSCACHE_GET_HIT(vp, uid, mode) 1108f0e65c9SRick Macklem #define KDTRACE_NFS_ACCESSCACHE_GET_MISS(vp, uid, mode) 1118f0e65c9SRick Macklem #define KDTRACE_NFS_ACCESSCACHE_LOAD_DONE(vp, uid, rmode, error) 1128f0e65c9SRick Macklem 1138f0e65c9SRick Macklem #define KDTRACE_NFS_ATTRCACHE_FLUSH_DONE(vp) 1148f0e65c9SRick Macklem #define KDTRACE_NFS_ATTRCACHE_GET_HIT(vp, vap) 1158f0e65c9SRick Macklem #define KDTRACE_NFS_ATTRCACHE_GET_MISS(vp) 1168f0e65c9SRick Macklem #define KDTRACE_NFS_ATTRCACHE_LOAD_DONE(vp, vap, error) 1178f0e65c9SRick Macklem 1188f0e65c9SRick Macklem #endif /* KDTRACE_HOOKS */ 1198f0e65c9SRick Macklem 1208f0e65c9SRick Macklem #endif /* !_NFSCL_NFS_KDTRACE_H_ */ 121