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