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