4 * The contents of this file are subject to the terms of the
5 * Common Development and Distribution License (the "License").
6 * You may not use this file except in compliance with the License.
7 *
8 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
9 * or http://www.opensolaris.org/os/licensing.
10 * See the License for the specific language governing permissions
11 * and limitations under the License.
12 *
13 * When distributing Covered Code, include this CDDL HEADER in each
14 * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
15 * If applicable, add the following below this CDDL HEADER, with the
16 * fields enclosed by brackets "[]" replaced with your own identifying
17 * information: Portions Copyright [yyyy] [name of copyright owner]
18 *
19 * CDDL HEADER END
20 */
21 /*
22 * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
23 * Copyright (c) 2013 by Delphix. All rights reserved.
24 */
25
26 #ifndef _SYS_SDT_H
27 #define _SYS_SDT_H
28
29 #include <sys/stdint.h>
30
31 #ifdef __cplusplus
32 extern "C" {
33 #endif
34
35 #ifndef _KERNEL
36
37 #define DTRACE_PROBE(provider, name) { \
38 extern void __dtrace_##provider##___##name(void); \
39 __dtrace_##provider##___##name(); \
40 }
41
42 #define DTRACE_PROBE1(provider, name, arg1) { \
43 extern void __dtrace_##provider##___##name(unsigned long); \
213 DTRACE_PROBE6(__iscsi_##name, type1, arg1, type2, arg2, \
214 type3, arg3, type4, arg4, type5, arg5, type6, arg6);
215
216 #define DTRACE_ISCSI_7(name, type1, arg1, type2, arg2, \
217 type3, arg3, type4, arg4, type5, arg5, type6, arg6, type7, arg7) \
218 DTRACE_PROBE7(__iscsi_##name, type1, arg1, type2, arg2, \
219 type3, arg3, type4, arg4, type5, arg5, type6, arg6, \
220 type7, arg7);
221
222 #define DTRACE_ISCSI_8(name, type1, arg1, type2, arg2, \
223 type3, arg3, type4, arg4, type5, arg5, type6, arg6, \
224 type7, arg7, type8, arg8) \
225 DTRACE_PROBE8(__iscsi_##name, type1, arg1, type2, arg2, \
226 type3, arg3, type4, arg4, type5, arg5, type6, arg6, \
227 type7, arg7, type8, arg8);
228
229 #define DTRACE_NFSV3_3(name, type1, arg1, type2, arg2, \
230 type3, arg3) \
231 DTRACE_PROBE3(__nfsv3_##name, type1, arg1, type2, arg2, \
232 type3, arg3);
233 #define DTRACE_NFSV3_4(name, type1, arg1, type2, arg2, \
234 type3, arg3, type4, arg4) \
235 DTRACE_PROBE4(__nfsv3_##name, type1, arg1, type2, arg2, \
236 type3, arg3, type4, arg4);
237
238 #define DTRACE_NFSV4_1(name, type1, arg1) \
239 DTRACE_PROBE1(__nfsv4_##name, type1, arg1);
240
241 #define DTRACE_NFSV4_2(name, type1, arg1, type2, arg2) \
242 DTRACE_PROBE2(__nfsv4_##name, type1, arg1, type2, arg2);
243
244 #define DTRACE_NFSV4_3(name, type1, arg1, type2, arg2, type3, arg3) \
245 DTRACE_PROBE3(__nfsv4_##name, type1, arg1, type2, arg2, type3, arg3);
246
247 #define DTRACE_SMB_1(name, type1, arg1) \
248 DTRACE_PROBE1(__smb_##name, type1, arg1);
249
250 #define DTRACE_SMB_2(name, type1, arg1, type2, arg2) \
251 DTRACE_PROBE2(__smb_##name, type1, arg1, type2, arg2);
252
253 #define DTRACE_IP(name) \
254 DTRACE_PROBE(__ip_##name);
255
256 #define DTRACE_IP1(name, type1, arg1) \
257 DTRACE_PROBE1(__ip_##name, type1, arg1);
258
259 #define DTRACE_IP2(name, type1, arg1, type2, arg2) \
260 DTRACE_PROBE2(__ip_##name, type1, arg1, type2, arg2);
261
262 #define DTRACE_IP3(name, type1, arg1, type2, arg2, type3, arg3) \
263 DTRACE_PROBE3(__ip_##name, type1, arg1, type2, arg2, type3, arg3);
264
265 #define DTRACE_IP4(name, type1, arg1, type2, arg2, \
266 type3, arg3, type4, arg4) \
267 DTRACE_PROBE4(__ip_##name, type1, arg1, type2, arg2, \
268 type3, arg3, type4, arg4);
269
270 #define DTRACE_IP5(name, type1, arg1, type2, arg2, \
271 type3, arg3, type4, arg4, type5, arg5) \
|
4 * The contents of this file are subject to the terms of the
5 * Common Development and Distribution License (the "License").
6 * You may not use this file except in compliance with the License.
7 *
8 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
9 * or http://www.opensolaris.org/os/licensing.
10 * See the License for the specific language governing permissions
11 * and limitations under the License.
12 *
13 * When distributing Covered Code, include this CDDL HEADER in each
14 * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
15 * If applicable, add the following below this CDDL HEADER, with the
16 * fields enclosed by brackets "[]" replaced with your own identifying
17 * information: Portions Copyright [yyyy] [name of copyright owner]
18 *
19 * CDDL HEADER END
20 */
21 /*
22 * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
23 * Copyright (c) 2013 by Delphix. All rights reserved.
24 * Copyright 2018 Nexenta Systems, Inc. All rights reserved.
25 */
26
27 #ifndef _SYS_SDT_H
28 #define _SYS_SDT_H
29
30 #include <sys/stdint.h>
31
32 #ifdef __cplusplus
33 extern "C" {
34 #endif
35
36 #ifndef _KERNEL
37
38 #define DTRACE_PROBE(provider, name) { \
39 extern void __dtrace_##provider##___##name(void); \
40 __dtrace_##provider##___##name(); \
41 }
42
43 #define DTRACE_PROBE1(provider, name, arg1) { \
44 extern void __dtrace_##provider##___##name(unsigned long); \
214 DTRACE_PROBE6(__iscsi_##name, type1, arg1, type2, arg2, \
215 type3, arg3, type4, arg4, type5, arg5, type6, arg6);
216
217 #define DTRACE_ISCSI_7(name, type1, arg1, type2, arg2, \
218 type3, arg3, type4, arg4, type5, arg5, type6, arg6, type7, arg7) \
219 DTRACE_PROBE7(__iscsi_##name, type1, arg1, type2, arg2, \
220 type3, arg3, type4, arg4, type5, arg5, type6, arg6, \
221 type7, arg7);
222
223 #define DTRACE_ISCSI_8(name, type1, arg1, type2, arg2, \
224 type3, arg3, type4, arg4, type5, arg5, type6, arg6, \
225 type7, arg7, type8, arg8) \
226 DTRACE_PROBE8(__iscsi_##name, type1, arg1, type2, arg2, \
227 type3, arg3, type4, arg4, type5, arg5, type6, arg6, \
228 type7, arg7, type8, arg8);
229
230 #define DTRACE_NFSV3_3(name, type1, arg1, type2, arg2, \
231 type3, arg3) \
232 DTRACE_PROBE3(__nfsv3_##name, type1, arg1, type2, arg2, \
233 type3, arg3);
234
235 #define DTRACE_NFSV3_4(name, type1, arg1, type2, arg2, \
236 type3, arg3, type4, arg4) \
237 DTRACE_PROBE4(__nfsv3_##name, type1, arg1, type2, arg2, \
238 type3, arg3, type4, arg4);
239
240 #define DTRACE_NFSV3_5(name, type1, arg1, type2, arg2, \
241 type3, arg3, type4, arg4, type5, arg5) \
242 DTRACE_PROBE5(__nfsv3_##name, type1, arg1, type2, arg2, \
243 type3, arg3, type4, arg4, type5, arg5);
244
245 #define DTRACE_NFSV4_1(name, type1, arg1) \
246 DTRACE_PROBE1(__nfsv4_##name, type1, arg1);
247
248 #define DTRACE_NFSV4_2(name, type1, arg1, type2, arg2) \
249 DTRACE_PROBE2(__nfsv4_##name, type1, arg1, type2, arg2);
250
251 #define DTRACE_NFSV4_3(name, type1, arg1, type2, arg2, type3, arg3) \
252 DTRACE_PROBE3(__nfsv4_##name, type1, arg1, type2, arg2, type3, arg3);
253
254 /*
255 * The SMB probes are done a little differently from the other probes
256 * in this file for the benefit of the libfksmbsrv USDT provider.
257 * See: lib/smbsrv/libfksmbsrv/common/sys/sdt.h
258 */
259 #define DTRACE_SMB_START(name, type1, arg1) \
260 DTRACE_PROBE1(__smb_##name##__start, type1, arg1);
261 #define DTRACE_SMB_DONE(name, type1, arg1) \
262 DTRACE_PROBE1(__smb_##name##__done, type1, arg1);
263
264 #define DTRACE_SMB2_START(name, type1, arg1) \
265 DTRACE_PROBE1(__smb2_##name##__start, type1, arg1);
266 #define DTRACE_SMB2_DONE(name, type1, arg1) \
267 DTRACE_PROBE1(__smb2_##name##__done, type1, arg1);
268
269 #define DTRACE_IP(name) \
270 DTRACE_PROBE(__ip_##name);
271
272 #define DTRACE_IP1(name, type1, arg1) \
273 DTRACE_PROBE1(__ip_##name, type1, arg1);
274
275 #define DTRACE_IP2(name, type1, arg1, type2, arg2) \
276 DTRACE_PROBE2(__ip_##name, type1, arg1, type2, arg2);
277
278 #define DTRACE_IP3(name, type1, arg1, type2, arg2, type3, arg3) \
279 DTRACE_PROBE3(__ip_##name, type1, arg1, type2, arg2, type3, arg3);
280
281 #define DTRACE_IP4(name, type1, arg1, type2, arg2, \
282 type3, arg3, type4, arg4) \
283 DTRACE_PROBE4(__ip_##name, type1, arg1, type2, arg2, \
284 type3, arg3, type4, arg4);
285
286 #define DTRACE_IP5(name, type1, arg1, type2, arg2, \
287 type3, arg3, type4, arg4, type5, arg5) \
|