1 /* SPDX-License-Identifier: BSD-3-Clause 2 * Copyright(c) 2024 HiSilicon Limited 3 */ 4 5 #ifndef RTE_DMADEV_TRACE_FP_H 6 #define RTE_DMADEV_TRACE_FP_H 7 8 /** 9 * @file 10 * 11 * API for dmadev fastpath trace support 12 */ 13 14 #include <rte_trace_point.h> 15 16 #ifdef __cplusplus 17 extern "C" { 18 #endif 19 20 RTE_TRACE_POINT_FP( 21 rte_dma_trace_stats_get, 22 RTE_TRACE_POINT_ARGS(int16_t dev_id, uint16_t vchan, 23 struct rte_dma_stats *stats, int ret), 24 rte_trace_point_emit_i16(dev_id); 25 rte_trace_point_emit_u16(vchan); 26 rte_trace_point_emit_u64(stats->submitted); 27 rte_trace_point_emit_u64(stats->completed); 28 rte_trace_point_emit_u64(stats->errors); 29 rte_trace_point_emit_int(ret); 30 ) 31 32 RTE_TRACE_POINT_FP( 33 rte_dma_trace_vchan_status, 34 RTE_TRACE_POINT_ARGS(int16_t dev_id, uint16_t vchan, 35 enum rte_dma_vchan_status *status, int ret), 36 #ifdef _RTE_TRACE_POINT_REGISTER_H_ 37 enum rte_dma_vchan_status __status = 0; 38 status = &__status; 39 #endif /* _RTE_TRACE_POINT_REGISTER_H_ */ 40 int vchan_status = *status; 41 rte_trace_point_emit_i16(dev_id); 42 rte_trace_point_emit_u16(vchan); 43 rte_trace_point_emit_int(vchan_status); 44 rte_trace_point_emit_int(ret); 45 ) 46 47 RTE_TRACE_POINT_FP( 48 rte_dma_trace_copy, 49 RTE_TRACE_POINT_ARGS(int16_t dev_id, uint16_t vchan, rte_iova_t src, 50 rte_iova_t dst, uint32_t length, uint64_t flags, 51 int ret), 52 rte_trace_point_emit_i16(dev_id); 53 rte_trace_point_emit_u16(vchan); 54 rte_trace_point_emit_u64(src); 55 rte_trace_point_emit_u64(dst); 56 rte_trace_point_emit_u32(length); 57 rte_trace_point_emit_u64(flags); 58 rte_trace_point_emit_int(ret); 59 ) 60 61 RTE_TRACE_POINT_FP( 62 rte_dma_trace_copy_sg, 63 RTE_TRACE_POINT_ARGS(int16_t dev_id, uint16_t vchan, 64 struct rte_dma_sge *src, struct rte_dma_sge *dst, 65 uint16_t nb_src, uint16_t nb_dst, uint64_t flags, 66 int ret), 67 rte_trace_point_emit_i16(dev_id); 68 rte_trace_point_emit_u16(vchan); 69 rte_trace_point_emit_ptr(src); 70 rte_trace_point_emit_ptr(dst); 71 rte_trace_point_emit_u16(nb_src); 72 rte_trace_point_emit_u16(nb_dst); 73 rte_trace_point_emit_u64(flags); 74 rte_trace_point_emit_int(ret); 75 ) 76 77 RTE_TRACE_POINT_FP( 78 rte_dma_trace_fill, 79 RTE_TRACE_POINT_ARGS(int16_t dev_id, uint16_t vchan, uint64_t pattern, 80 rte_iova_t dst, uint32_t length, uint64_t flags, 81 int ret), 82 rte_trace_point_emit_i16(dev_id); 83 rte_trace_point_emit_u16(vchan); 84 rte_trace_point_emit_u64(pattern); 85 rte_trace_point_emit_u64(dst); 86 rte_trace_point_emit_u32(length); 87 rte_trace_point_emit_u64(flags); 88 rte_trace_point_emit_int(ret); 89 ) 90 91 RTE_TRACE_POINT_FP( 92 rte_dma_trace_submit, 93 RTE_TRACE_POINT_ARGS(int16_t dev_id, uint16_t vchan, int ret), 94 rte_trace_point_emit_i16(dev_id); 95 rte_trace_point_emit_u16(vchan); 96 rte_trace_point_emit_int(ret); 97 ) 98 99 RTE_TRACE_POINT_FP( 100 rte_dma_trace_completed, 101 RTE_TRACE_POINT_ARGS(int16_t dev_id, uint16_t vchan, 102 const uint16_t nb_cpls, uint16_t *last_idx, 103 bool *has_error, uint16_t ret), 104 #ifdef _RTE_TRACE_POINT_REGISTER_H_ 105 uint16_t __last_idx = 0; 106 bool __has_error = false; 107 last_idx = &__last_idx; 108 has_error = &__has_error; 109 #endif /* _RTE_TRACE_POINT_REGISTER_H_ */ 110 int has_error_val = *has_error; 111 int last_idx_val = *last_idx; 112 rte_trace_point_emit_i16(dev_id); 113 rte_trace_point_emit_u16(vchan); 114 rte_trace_point_emit_u16(nb_cpls); 115 rte_trace_point_emit_int(last_idx_val); 116 rte_trace_point_emit_int(has_error_val); 117 rte_trace_point_emit_u16(ret); 118 ) 119 120 RTE_TRACE_POINT_FP( 121 rte_dma_trace_completed_status, 122 RTE_TRACE_POINT_ARGS(int16_t dev_id, uint16_t vchan, 123 const uint16_t nb_cpls, uint16_t *last_idx, 124 enum rte_dma_status_code *status, uint16_t ret), 125 #ifdef _RTE_TRACE_POINT_REGISTER_H_ 126 uint16_t __last_idx = 0; 127 last_idx = &__last_idx; 128 #endif /* _RTE_TRACE_POINT_REGISTER_H_ */ 129 int last_idx_val = *last_idx; 130 rte_trace_point_emit_i16(dev_id); 131 rte_trace_point_emit_u16(vchan); 132 rte_trace_point_emit_u16(nb_cpls); 133 rte_trace_point_emit_int(last_idx_val); 134 rte_trace_point_emit_ptr(status); 135 rte_trace_point_emit_u16(ret); 136 ) 137 138 RTE_TRACE_POINT_FP( 139 rte_dma_trace_burst_capacity, 140 RTE_TRACE_POINT_ARGS(int16_t dev_id, uint16_t vchan, uint16_t ret), 141 rte_trace_point_emit_i16(dev_id); 142 rte_trace_point_emit_u16(vchan); 143 rte_trace_point_emit_u16(ret); 144 ) 145 146 #ifdef __cplusplus 147 } 148 #endif 149 150 #endif /* RTE_DMADEV_TRACE_FP_H */ 151