xref: /dpdk/lib/eal/include/rte_eal_trace.h (revision 99e6c7e3)
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