xref: /spdk/include/spdk_internal/usdt.h (revision 7c30df4ece08144a17fcc30463c37966d3e36022)
1 /*   SPDX-License-Identifier: BSD-3-Clause
2  *   Copyright (C) 2021 Intel Corporation.
3  *   All rights reserved.
4  */
5 
6 #ifndef SPDK_INTERNAL_USDT_H
7 #define SPDK_INTERNAL_USDT_H
8 
9 #include "spdk/config.h"
10 #include "spdk/env.h"
11 
12 #if defined(SPDK_CONFIG_USDT) && !defined(SPDK_UNIT_TEST)
13 
14 #if defined(__aarch64__)
15 #define STAP_SDT_ARG_CONSTRAINT        nr
16 #endif
17 
18 #include <sys/sdt.h>
19 
20 #define SPDK_DTRACE_PROBE(name)			DTRACE_PROBE1(spdk,name,0)
21 #define SPDK_DTRACE_PROBE1(name,a1)		DTRACE_PROBE2(spdk,name,0,a1)
22 #define SPDK_DTRACE_PROBE2(name,a1,a2)		DTRACE_PROBE3(spdk,name,0,a1,a2)
23 #define SPDK_DTRACE_PROBE3(name,a1,a2,a3)	DTRACE_PROBE4(spdk,name,0,a1,a2,a3)
24 #define SPDK_DTRACE_PROBE4(name,a1,a2,a3,a4)	DTRACE_PROBE5(spdk,name,0,a1,a2,a3,a4)
25 
26 /* These variants implicitly add a TSC argument at the front of the caller's arguments.
27  * These are useful for scripts that require an exact timestamp for correlating
28  * USDT events with those captured by the lower-overhead SPDK tracing framework.
29  */
30 #define SPDK_DTRACE_PROBE_TICKS(name)			DTRACE_PROBE1(spdk,name,spdk_get_ticks())
31 #define SPDK_DTRACE_PROBE1_TICKS(name,a1)		DTRACE_PROBE2(spdk,name,spdk_get_ticks(),a1)
32 #define SPDK_DTRACE_PROBE2_TICKS(name,a1,a2)		DTRACE_PROBE3(spdk,name,spdk_get_ticks(),a1,a2)
33 #define SPDK_DTRACE_PROBE3_TICKS(name,a1,a2,a3)		DTRACE_PROBE4(spdk,name,spdk_get_ticks(),a1,a2,a3)
34 #define SPDK_DTRACE_PROBE4_TICKS(name,a1,a2,a3,a4)	DTRACE_PROBE5(spdk,name,spdk_get_ticks(),a1,a2,a3,a4)
35 
36 #else
37 
38 #define SPDK_DTRACE_PROBE(...)
39 #define SPDK_DTRACE_PROBE1(...)
40 #define SPDK_DTRACE_PROBE2(...)
41 #define SPDK_DTRACE_PROBE3(...)
42 #define SPDK_DTRACE_PROBE4(...)
43 
44 #define SPDK_DTRACE_PROBE_TICKS(...)
45 #define SPDK_DTRACE_PROBE1_TICKS(...)
46 #define SPDK_DTRACE_PROBE2_TICKS(...)
47 #define SPDK_DTRACE_PROBE3_TICKS(...)
48 #define SPDK_DTRACE_PROBE4_TICKS(...)
49 
50 #endif
51 
52 #endif /* SPDK_INTERNAL_USDT_H */
53