1223280Srmacklem/*-
2223280Srmacklem * Copyright (c) 2009 Robert N. M. Watson
3223280Srmacklem * All rights reserved.
4223280Srmacklem *
5223280Srmacklem * This software was developed at the University of Cambridge Computer
6223280Srmacklem * Laboratory with support from a grant from Google, Inc.
7223280Srmacklem *
8223280Srmacklem * Redistribution and use in source and binary forms, with or without
9223280Srmacklem * modification, are permitted provided that the following conditions
10223280Srmacklem * are met:
11223280Srmacklem * 1. Redistributions of source code must retain the above copyright
12223280Srmacklem *    notice, this list of conditions and the following disclaimer.
13223280Srmacklem * 2. Redistributions in binary form must reproduce the above copyright
14223280Srmacklem *    notice, this list of conditions and the following disclaimer in the
15223280Srmacklem *    documentation and/or other materials provided with the distribution.
16223280Srmacklem *
17223280Srmacklem * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
18223280Srmacklem * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
19223280Srmacklem * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
20223280Srmacklem * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
21223280Srmacklem * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
22223280Srmacklem * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
23223280Srmacklem * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
24223280Srmacklem * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
25223280Srmacklem * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
26223280Srmacklem * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
27223280Srmacklem * SUCH DAMAGE.
28223280Srmacklem *
29223280Srmacklem * $FreeBSD$
30223280Srmacklem */
31223280Srmacklem
32223280Srmacklem#ifndef _NFSCL_NFS_KDTRACE_H_
33223280Srmacklem#define	_NFSCL_NFS_KDTRACE_H_
34223280Srmacklem
35223280Srmacklem/*
36223280Srmacklem * Definitions for NFS access cache probes.
37223280Srmacklem */
38223280Srmacklemextern uint32_t	nfscl_accesscache_flush_done_id;
39223280Srmacklemextern uint32_t	nfscl_accesscache_get_hit_id;
40223280Srmacklemextern uint32_t	nfscl_accesscache_get_miss_id;
41223280Srmacklemextern uint32_t	nfscl_accesscache_load_done_id;
42258667Spluknet
43258666Sglebius/*
44258666Sglebius * Definitions for NFS attribute cache probes.
45258666Sglebius */
46258667Spluknetextern uint32_t	nfscl_attrcache_flush_done_id;
47258667Spluknetextern uint32_t	nfscl_attrcache_get_hit_id;
48258667Spluknetextern uint32_t	nfscl_attrcache_get_miss_id;
49258667Spluknetextern uint32_t	nfscl_attrcache_load_done_id;
50223280Srmacklem
51258666Sglebius#ifdef KDTRACE_HOOKS
52258666Sglebius#include <sys/dtrace_bsd.h>
53258666Sglebius
54223280Srmacklem#define	KDTRACE_NFS_ACCESSCACHE_FLUSH_DONE(vp)	do {			\
55223280Srmacklem	if (dtrace_nfscl_accesscache_flush_done_probe != NULL)		\
56223280Srmacklem		(dtrace_nfscl_accesscache_flush_done_probe)(		\
57223280Srmacklem		    nfscl_accesscache_flush_done_id, (vp));		\
58223280Srmacklem} while (0)
59223280Srmacklem
60223280Srmacklem#define	KDTRACE_NFS_ACCESSCACHE_GET_HIT(vp, uid, mode)	do {		\
61223280Srmacklem	if (dtrace_nfscl_accesscache_get_hit_probe != NULL)		\
62223280Srmacklem		(dtrace_nfscl_accesscache_get_hit_probe)(		\
63223280Srmacklem		    nfscl_accesscache_get_hit_id, (vp), (uid),		\
64223280Srmacklem		    (mode));						\
65223280Srmacklem} while (0)
66223280Srmacklem
67223280Srmacklem#define	KDTRACE_NFS_ACCESSCACHE_GET_MISS(vp, uid, mode)	do {		\
68223280Srmacklem	if (dtrace_nfscl_accesscache_get_miss_probe != NULL)		\
69223280Srmacklem		(dtrace_nfscl_accesscache_get_miss_probe)(		\
70223280Srmacklem		    nfscl_accesscache_get_miss_id, (vp), (uid),		\
71223280Srmacklem		    (mode));						\
72223280Srmacklem} while (0)
73223280Srmacklem
74223280Srmacklem#define	KDTRACE_NFS_ACCESSCACHE_LOAD_DONE(vp, uid, rmode, error) do {	\
75223280Srmacklem	if (dtrace_nfscl_accesscache_load_done_probe != NULL)		\
76223280Srmacklem		(dtrace_nfscl_accesscache_load_done_probe)(		\
77223280Srmacklem		    nfscl_accesscache_load_done_id, (vp), (uid),	\
78223280Srmacklem		    (rmode), (error));					\
79223280Srmacklem} while (0)
80223280Srmacklem
81223280Srmacklem#define	KDTRACE_NFS_ATTRCACHE_FLUSH_DONE(vp)	do {			\
82223280Srmacklem	if (dtrace_nfscl_attrcache_flush_done_probe != NULL)		\
83223280Srmacklem		(dtrace_nfscl_attrcache_flush_done_probe)(		\
84223280Srmacklem		    nfscl_attrcache_flush_done_id, (vp));		\
85223280Srmacklem} while (0)
86223280Srmacklem
87223280Srmacklem#define	KDTRACE_NFS_ATTRCACHE_GET_HIT(vp, vap)	do {			\
88223280Srmacklem	if (dtrace_nfscl_attrcache_get_hit_probe != NULL)		\
89223280Srmacklem		(dtrace_nfscl_attrcache_get_hit_probe)(			\
90223280Srmacklem		    nfscl_attrcache_get_hit_id, (vp), (vap));		\
91223280Srmacklem} while (0)
92223280Srmacklem
93223280Srmacklem#define	KDTRACE_NFS_ATTRCACHE_GET_MISS(vp)	do {			\
94223280Srmacklem	if (dtrace_nfscl_attrcache_get_miss_probe != NULL)		\
95223280Srmacklem		(dtrace_nfscl_attrcache_get_miss_probe)(		\
96223280Srmacklem			    nfscl_attrcache_get_miss_id, (vp));		\
97223280Srmacklem} while (0)
98223280Srmacklem
99223280Srmacklem#define	KDTRACE_NFS_ATTRCACHE_LOAD_DONE(vp, vap, error)	do {		\
100223280Srmacklem	if (dtrace_nfscl_attrcache_load_done_probe != NULL)		\
101223280Srmacklem		(dtrace_nfscl_attrcache_load_done_probe)(		\
102223280Srmacklem		    nfscl_attrcache_load_done_id, (vp), (vap),		\
103223280Srmacklem		    (error));						\
104223280Srmacklem} while (0)
105223280Srmacklem
106223280Srmacklem#else /* !KDTRACE_HOOKS */
107223280Srmacklem
108223280Srmacklem#define	KDTRACE_NFS_ACCESSCACHE_FLUSH_DONE(vp)
109223280Srmacklem#define	KDTRACE_NFS_ACCESSCACHE_GET_HIT(vp, uid, mode)
110223280Srmacklem#define	KDTRACE_NFS_ACCESSCACHE_GET_MISS(vp, uid, mode)
111223280Srmacklem#define	KDTRACE_NFS_ACCESSCACHE_LOAD_DONE(vp, uid, rmode, error)
112223280Srmacklem
113223280Srmacklem#define	KDTRACE_NFS_ATTRCACHE_FLUSH_DONE(vp)
114223280Srmacklem#define	KDTRACE_NFS_ATTRCACHE_GET_HIT(vp, vap)
115223280Srmacklem#define	KDTRACE_NFS_ATTRCACHE_GET_MISS(vp)
116223280Srmacklem#define	KDTRACE_NFS_ATTRCACHE_LOAD_DONE(vp, vap, error)
117223280Srmacklem
118223280Srmacklem#endif /* KDTRACE_HOOKS */
119223280Srmacklem
120223280Srmacklem#endif /* !_NFSCL_NFS_KDTRACE_H_ */
121