1 /* SPDX-License-Identifier: BSD-3-Clause 2 * Copyright(C) 2020 Marvell International Ltd. 3 */ 4 5 #ifndef _RTE_EAL_TRACE_H_ 6 #define _RTE_EAL_TRACE_H_ 7 8 /** 9 * @file 10 * 11 * API for EAL trace support 12 */ 13 14 #ifdef __cplusplus 15 extern "C" { 16 #endif 17 18 #include <rte_alarm.h> 19 #include <rte_interrupts.h> 20 #include <rte_trace_point.h> 21 22 /* Alarm */ 23 RTE_TRACE_POINT( 24 rte_eal_trace_alarm_set, 25 RTE_TRACE_POINT_ARGS(uint64_t us, rte_eal_alarm_callback cb_fn, 26 void *cb_arg, int rc), 27 rte_trace_point_emit_u64(us); 28 rte_trace_point_emit_ptr(cb_fn); 29 rte_trace_point_emit_ptr(cb_arg); 30 rte_trace_point_emit_int(rc); 31 ) 32 33 RTE_TRACE_POINT( 34 rte_eal_trace_alarm_cancel, 35 RTE_TRACE_POINT_ARGS(rte_eal_alarm_callback cb_fn, void *cb_arg, 36 int count), 37 rte_trace_point_emit_ptr(cb_fn); 38 rte_trace_point_emit_ptr(cb_arg); 39 rte_trace_point_emit_int(count); 40 ) 41 42 /* Generic */ 43 RTE_TRACE_POINT( 44 rte_eal_trace_generic_void, 45 RTE_TRACE_POINT_ARGS(void), 46 ) 47 48 RTE_TRACE_POINT( 49 rte_eal_trace_generic_u64, 50 RTE_TRACE_POINT_ARGS(uint64_t in), 51 rte_trace_point_emit_u64(in); 52 ) 53 54 RTE_TRACE_POINT( 55 rte_eal_trace_generic_u32, 56 RTE_TRACE_POINT_ARGS(uint32_t in), 57 rte_trace_point_emit_u32(in); 58 ) 59 60 RTE_TRACE_POINT( 61 rte_eal_trace_generic_u16, 62 RTE_TRACE_POINT_ARGS(uint16_t in), 63 rte_trace_point_emit_u16(in); 64 ) 65 66 RTE_TRACE_POINT( 67 rte_eal_trace_generic_u8, 68 RTE_TRACE_POINT_ARGS(uint8_t in), 69 rte_trace_point_emit_u8(in); 70 ) 71 72 RTE_TRACE_POINT( 73 rte_eal_trace_generic_i64, 74 RTE_TRACE_POINT_ARGS(int64_t in), 75 rte_trace_point_emit_i64(in); 76 ) 77 78 RTE_TRACE_POINT( 79 rte_eal_trace_generic_i32, 80 RTE_TRACE_POINT_ARGS(int32_t in), 81 rte_trace_point_emit_i32(in); 82 ) 83 84 RTE_TRACE_POINT( 85 rte_eal_trace_generic_i16, 86 RTE_TRACE_POINT_ARGS(int16_t in), 87 rte_trace_point_emit_i16(in); 88 ) 89 90 RTE_TRACE_POINT( 91 rte_eal_trace_generic_i8, 92 RTE_TRACE_POINT_ARGS(int8_t in), 93 rte_trace_point_emit_i8(in); 94 ) 95 96 RTE_TRACE_POINT( 97 rte_eal_trace_generic_int, 98 RTE_TRACE_POINT_ARGS(int in), 99 rte_trace_point_emit_int(in); 100 ) 101 102 RTE_TRACE_POINT( 103 rte_eal_trace_generic_long, 104 RTE_TRACE_POINT_ARGS(long in), 105 rte_trace_point_emit_long(in); 106 ) 107 108 RTE_TRACE_POINT( 109 rte_eal_trace_generic_float, 110 RTE_TRACE_POINT_ARGS(float in), 111 rte_trace_point_emit_float(in); 112 ) 113 114 RTE_TRACE_POINT( 115 rte_eal_trace_generic_double, 116 RTE_TRACE_POINT_ARGS(double in), 117 rte_trace_point_emit_double(in); 118 ) 119 120 RTE_TRACE_POINT( 121 rte_eal_trace_generic_ptr, 122 RTE_TRACE_POINT_ARGS(const void *ptr), 123 rte_trace_point_emit_ptr(ptr); 124 ) 125 126 RTE_TRACE_POINT( 127 rte_eal_trace_generic_str, 128 RTE_TRACE_POINT_ARGS(const char *str), 129 rte_trace_point_emit_string(str); 130 ) 131 132 RTE_TRACE_POINT( 133 rte_eal_trace_generic_size_t, 134 RTE_TRACE_POINT_ARGS(size_t sz), 135 rte_trace_point_emit_size_t(sz); 136 ) 137 138 RTE_TRACE_POINT( 139 rte_eal_trace_generic_func, 140 RTE_TRACE_POINT_ARGS(const char *func), 141 rte_trace_point_emit_string(func); 142 ) 143 144 #define RTE_EAL_TRACE_GENERIC_FUNC rte_eal_trace_generic_func(__func__) 145 146 /* Interrupt */ 147 RTE_TRACE_POINT( 148 rte_eal_trace_intr_callback_register, 149 RTE_TRACE_POINT_ARGS(const struct rte_intr_handle *handle, 150 rte_intr_callback_fn cb, void *cb_arg, int rc), 151 rte_trace_point_emit_int(rc); 152 rte_trace_point_emit_int(handle->vfio_dev_fd); 153 rte_trace_point_emit_int(handle->fd); 154 rte_trace_point_emit_int(handle->type); 155 rte_trace_point_emit_u32(handle->max_intr); 156 rte_trace_point_emit_u32(handle->nb_efd); 157 rte_trace_point_emit_ptr(cb); 158 rte_trace_point_emit_ptr(cb_arg); 159 ) 160 RTE_TRACE_POINT( 161 rte_eal_trace_intr_callback_unregister, 162 RTE_TRACE_POINT_ARGS(const struct rte_intr_handle *handle, 163 rte_intr_callback_fn cb, void *cb_arg, int rc), 164 rte_trace_point_emit_int(rc); 165 rte_trace_point_emit_int(handle->vfio_dev_fd); 166 rte_trace_point_emit_int(handle->fd); 167 rte_trace_point_emit_int(handle->type); 168 rte_trace_point_emit_u32(handle->max_intr); 169 rte_trace_point_emit_u32(handle->nb_efd); 170 rte_trace_point_emit_ptr(cb); 171 rte_trace_point_emit_ptr(cb_arg); 172 ) 173 RTE_TRACE_POINT( 174 rte_eal_trace_intr_enable, 175 RTE_TRACE_POINT_ARGS(const struct rte_intr_handle *handle, int rc), 176 rte_trace_point_emit_int(rc); 177 rte_trace_point_emit_int(handle->vfio_dev_fd); 178 rte_trace_point_emit_int(handle->fd); 179 rte_trace_point_emit_int(handle->type); 180 rte_trace_point_emit_u32(handle->max_intr); 181 rte_trace_point_emit_u32(handle->nb_efd); 182 ) 183 RTE_TRACE_POINT( 184 rte_eal_trace_intr_disable, 185 RTE_TRACE_POINT_ARGS(const struct rte_intr_handle *handle, int rc), 186 rte_trace_point_emit_int(rc); 187 rte_trace_point_emit_int(handle->vfio_dev_fd); 188 rte_trace_point_emit_int(handle->fd); 189 rte_trace_point_emit_int(handle->type); 190 rte_trace_point_emit_u32(handle->max_intr); 191 rte_trace_point_emit_u32(handle->nb_efd); 192 ) 193 194 /* Memory */ 195 RTE_TRACE_POINT( 196 rte_eal_trace_mem_zmalloc, 197 RTE_TRACE_POINT_ARGS(const char *type, size_t size, unsigned int align, 198 int socket, void *ptr), 199 rte_trace_point_emit_string(type); 200 rte_trace_point_emit_size_t(size); 201 rte_trace_point_emit_u32(align); 202 rte_trace_point_emit_int(socket); 203 rte_trace_point_emit_ptr(ptr); 204 ) 205 206 RTE_TRACE_POINT( 207 rte_eal_trace_mem_malloc, 208 RTE_TRACE_POINT_ARGS(const char *type, size_t size, unsigned int align, 209 int socket, void *ptr), 210 rte_trace_point_emit_string(type); 211 rte_trace_point_emit_size_t(size); 212 rte_trace_point_emit_u32(align); 213 rte_trace_point_emit_int(socket); 214 rte_trace_point_emit_ptr(ptr); 215 ) 216 217 RTE_TRACE_POINT( 218 rte_eal_trace_mem_realloc, 219 RTE_TRACE_POINT_ARGS(size_t size, unsigned int align, int socket, 220 void *ptr), 221 rte_trace_point_emit_size_t(size); 222 rte_trace_point_emit_u32(align); 223 rte_trace_point_emit_int(socket); 224 rte_trace_point_emit_ptr(ptr); 225 ) 226 227 RTE_TRACE_POINT( 228 rte_eal_trace_mem_free, 229 RTE_TRACE_POINT_ARGS(void *ptr), 230 rte_trace_point_emit_ptr(ptr); 231 ) 232 233 /* Memzone */ 234 RTE_TRACE_POINT( 235 rte_eal_trace_memzone_reserve, 236 RTE_TRACE_POINT_ARGS(const char *name, size_t len, int socket_id, 237 unsigned int flags, unsigned int align, unsigned int bound, 238 const void *mz), 239 rte_trace_point_emit_string(name); 240 rte_trace_point_emit_size_t(len); 241 rte_trace_point_emit_int(socket_id); 242 rte_trace_point_emit_u32(flags); 243 rte_trace_point_emit_u32(align); 244 rte_trace_point_emit_u32(bound); 245 rte_trace_point_emit_ptr(mz); 246 ) 247 248 RTE_TRACE_POINT( 249 rte_eal_trace_memzone_lookup, 250 RTE_TRACE_POINT_ARGS(const char *name, const void *memzone), 251 rte_trace_point_emit_string(name); 252 rte_trace_point_emit_ptr(memzone); 253 ) 254 255 RTE_TRACE_POINT( 256 rte_eal_trace_memzone_free, 257 RTE_TRACE_POINT_ARGS(const char *name, void *addr, int rc), 258 rte_trace_point_emit_string(name); 259 rte_trace_point_emit_ptr(addr); 260 rte_trace_point_emit_int(rc); 261 ) 262 263 /* Thread */ 264 RTE_TRACE_POINT( 265 rte_eal_trace_thread_remote_launch, 266 RTE_TRACE_POINT_ARGS(int (*f)(void *), void *arg, 267 unsigned int worker_id, int rc), 268 rte_trace_point_emit_ptr(f); 269 rte_trace_point_emit_ptr(arg); 270 rte_trace_point_emit_u32(worker_id); 271 rte_trace_point_emit_int(rc); 272 ) 273 RTE_TRACE_POINT( 274 rte_eal_trace_thread_lcore_ready, 275 RTE_TRACE_POINT_ARGS(unsigned int lcore_id, const char *cpuset), 276 rte_trace_point_emit_u32(lcore_id); 277 rte_trace_point_emit_string(cpuset); 278 ) 279 280 #ifdef __cplusplus 281 } 282 #endif 283 284 #endif /* _RTE_EAL_TRACE_H_ */ 285