1221716Sattilio/*- 2221716Sattilio * Copyright (c) 2009 Robert N. M. Watson 3221716Sattilio * All rights reserved. 4221716Sattilio * 5221716Sattilio * This software was developed at the University of Cambridge Computer 6221716Sattilio * Laboratory with support from a grant from Google, Inc. 7221716Sattilio * 8221716Sattilio * Redistribution and use in source and binary forms, with or without 9221716Sattilio * modification, are permitted provided that the following conditions 10221716Sattilio * are met: 11221716Sattilio * 1. Redistributions of source code must retain the above copyright 12221716Sattilio * notice, this list of conditions and the following disclaimer. 13221716Sattilio * 2. Redistributions in binary form must reproduce the above copyright 14221716Sattilio * notice, this list of conditions and the following disclaimer in the 15221716Sattilio * documentation and/or other materials provided with the distribution. 16221716Sattilio * 17221716Sattilio * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 18221716Sattilio * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 19221716Sattilio * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 20221716Sattilio * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 21221716Sattilio * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 22221716Sattilio * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 23221716Sattilio * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 24221716Sattilio * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 25221716Sattilio * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 26221716Sattilio * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 27221716Sattilio * SUCH DAMAGE. 28221716Sattilio * 29221716Sattilio * $FreeBSD$ 30221716Sattilio */ 31221716Sattilio 32221716Sattilio#ifndef _NFSCLIENT_NFS_KDTRACE_H_ 33221716Sattilio#define _NFSCLIENT_NFS_KDTRACE_H_ 34221716Sattilio 35221716Sattilio#ifdef KDTRACE_HOOKS 36221716Sattilio#include <sys/dtrace_bsd.h> 37221716Sattilio 38221716Sattilio/* 39221716Sattilio * Definitions for NFS access cache probes. 40221716Sattilio */ 41221716Sattilioextern uint32_t nfsclient_accesscache_flush_done_id; 42221716Sattilioextern uint32_t nfsclient_accesscache_get_hit_id; 43221716Sattilioextern uint32_t nfsclient_accesscache_get_miss_id; 44221716Sattilioextern uint32_t nfsclient_accesscache_load_done_id; 45221716Sattilio 46221716Sattilio#define KDTRACE_NFS_ACCESSCACHE_FLUSH_DONE(vp) do { \ 47221716Sattilio if (dtrace_nfsclient_accesscache_flush_done_probe != NULL) \ 48221716Sattilio (dtrace_nfsclient_accesscache_flush_done_probe)( \ 49221716Sattilio nfsclient_accesscache_flush_done_id, (vp)); \ 50221716Sattilio} while (0) 51221716Sattilio 52221716Sattilio#define KDTRACE_NFS_ACCESSCACHE_GET_HIT(vp, uid, mode) do { \ 53221716Sattilio if (dtrace_nfsclient_accesscache_get_hit_probe != NULL) \ 54221716Sattilio (dtrace_nfsclient_accesscache_get_hit_probe)( \ 55221716Sattilio nfsclient_accesscache_get_hit_id, (vp), (uid), \ 56221716Sattilio (mode)); \ 57221716Sattilio} while (0) 58221716Sattilio 59221716Sattilio#define KDTRACE_NFS_ACCESSCACHE_GET_MISS(vp, uid, mode) do { \ 60221716Sattilio if (dtrace_nfsclient_accesscache_get_miss_probe != NULL) \ 61221716Sattilio (dtrace_nfsclient_accesscache_get_miss_probe)( \ 62221716Sattilio nfsclient_accesscache_get_miss_id, (vp), (uid), \ 63221716Sattilio (mode)); \ 64221716Sattilio} while (0) 65221716Sattilio 66221716Sattilio#define KDTRACE_NFS_ACCESSCACHE_LOAD_DONE(vp, uid, rmode, error) do { \ 67221716Sattilio if (dtrace_nfsclient_accesscache_load_done_probe != NULL) \ 68221716Sattilio (dtrace_nfsclient_accesscache_load_done_probe)( \ 69221716Sattilio nfsclient_accesscache_load_done_id, (vp), (uid), \ 70221716Sattilio (rmode), (error)); \ 71221716Sattilio} while (0) 72221716Sattilio 73221716Sattilio/* 74221716Sattilio * Definitions for NFS attribute cache probes. 75221716Sattilio */ 76221716Sattilioextern uint32_t nfsclient_attrcache_flush_done_id; 77221716Sattilioextern uint32_t nfsclient_attrcache_get_hit_id; 78221716Sattilioextern uint32_t nfsclient_attrcache_get_miss_id; 79221716Sattilioextern uint32_t nfsclient_attrcache_load_done_id; 80221716Sattilio 81221716Sattilio#define KDTRACE_NFS_ATTRCACHE_FLUSH_DONE(vp) do { \ 82221716Sattilio if (dtrace_nfsclient_attrcache_flush_done_probe != NULL) \ 83221716Sattilio (dtrace_nfsclient_attrcache_flush_done_probe)( \ 84221716Sattilio nfsclient_attrcache_flush_done_id, (vp)); \ 85221716Sattilio} while (0) 86221716Sattilio 87221716Sattilio#define KDTRACE_NFS_ATTRCACHE_GET_HIT(vp, vap) do { \ 88221716Sattilio if (dtrace_nfsclient_attrcache_get_hit_probe != NULL) \ 89221716Sattilio (dtrace_nfsclient_attrcache_get_hit_probe)( \ 90221716Sattilio nfsclient_attrcache_get_hit_id, (vp), (vap)); \ 91221716Sattilio} while (0) 92221716Sattilio 93221716Sattilio#define KDTRACE_NFS_ATTRCACHE_GET_MISS(vp) do { \ 94221716Sattilio if (dtrace_nfsclient_attrcache_get_miss_probe != NULL) \ 95221716Sattilio (dtrace_nfsclient_attrcache_get_miss_probe)( \ 96221716Sattilio nfsclient_attrcache_get_miss_id, (vp)); \ 97221716Sattilio} while (0) 98221716Sattilio 99221716Sattilio#define KDTRACE_NFS_ATTRCACHE_LOAD_DONE(vp, vap, error) do { \ 100221716Sattilio if (dtrace_nfsclient_attrcache_load_done_probe != NULL) \ 101221716Sattilio (dtrace_nfsclient_attrcache_load_done_probe)( \ 102221716Sattilio nfsclient_attrcache_load_done_id, (vp), (vap), \ 103221716Sattilio (error)); \ 104221716Sattilio} while (0) 105221716Sattilio 106221716Sattilio#else /* !KDTRACE_HOOKS */ 107221716Sattilio 108221716Sattilio#define KDTRACE_NFS_ACCESSCACHE_FLUSH_DONE(vp) 109221716Sattilio#define KDTRACE_NFS_ACCESSCACHE_GET_HIT(vp, uid, mode) 110221716Sattilio#define KDTRACE_NFS_ACCESSCACHE_GET_MISS(vp, uid, mode) 111221716Sattilio#define KDTRACE_NFS_ACCESSCACHE_LOAD_DONE(vp, uid, rmode, error) 112221716Sattilio 113221716Sattilio#define KDTRACE_NFS_ATTRCACHE_FLUSH_DONE(vp) 114221716Sattilio#define KDTRACE_NFS_ATTRCACHE_GET_HIT(vp, vap) 115221716Sattilio#define KDTRACE_NFS_ATTRCACHE_GET_MISS(vp) 116221716Sattilio#define KDTRACE_NFS_ATTRCACHE_LOAD_DONE(vp, vap, error) 117221716Sattilio 118221716Sattilio#endif /* KDTRACE_HOOKS */ 119221716Sattilio 120221716Sattilio#endif /* !_NFSCLIENT_NFS_KDTRACE_H_ */ 121