trace: simplify trace point registration
[dpdk.git] / lib / librte_eal / include / rte_eal_trace.h
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_func,
134         RTE_TRACE_POINT_ARGS(const char *func),
135         rte_trace_point_emit_string(func);
136 )
137
138 #define RTE_EAL_TRACE_GENERIC_FUNC rte_eal_trace_generic_func(__func__)
139
140 /* Interrupt */
141 RTE_TRACE_POINT(
142         rte_eal_trace_intr_callback_register,
143         RTE_TRACE_POINT_ARGS(const struct rte_intr_handle *handle,
144                 rte_intr_callback_fn cb, void *cb_arg, int rc),
145         rte_trace_point_emit_int(rc);
146         rte_trace_point_emit_int(handle->vfio_dev_fd);
147         rte_trace_point_emit_int(handle->fd);
148         rte_trace_point_emit_int(handle->type);
149         rte_trace_point_emit_u32(handle->max_intr);
150         rte_trace_point_emit_u32(handle->nb_efd);
151         rte_trace_point_emit_ptr(cb);
152         rte_trace_point_emit_ptr(cb_arg);
153 )
154 RTE_TRACE_POINT(
155         rte_eal_trace_intr_callback_unregister,
156         RTE_TRACE_POINT_ARGS(const struct rte_intr_handle *handle,
157                 rte_intr_callback_fn cb, void *cb_arg, int rc),
158         rte_trace_point_emit_int(rc);
159         rte_trace_point_emit_int(handle->vfio_dev_fd);
160         rte_trace_point_emit_int(handle->fd);
161         rte_trace_point_emit_int(handle->type);
162         rte_trace_point_emit_u32(handle->max_intr);
163         rte_trace_point_emit_u32(handle->nb_efd);
164         rte_trace_point_emit_ptr(cb);
165         rte_trace_point_emit_ptr(cb_arg);
166 )
167 RTE_TRACE_POINT(
168         rte_eal_trace_intr_enable,
169         RTE_TRACE_POINT_ARGS(const struct rte_intr_handle *handle, int rc),
170         rte_trace_point_emit_int(rc);
171         rte_trace_point_emit_int(handle->vfio_dev_fd);
172         rte_trace_point_emit_int(handle->fd);
173         rte_trace_point_emit_int(handle->type);
174         rte_trace_point_emit_u32(handle->max_intr);
175         rte_trace_point_emit_u32(handle->nb_efd);
176 )
177 RTE_TRACE_POINT(
178         rte_eal_trace_intr_disable,
179         RTE_TRACE_POINT_ARGS(const struct rte_intr_handle *handle, int rc),
180         rte_trace_point_emit_int(rc);
181         rte_trace_point_emit_int(handle->vfio_dev_fd);
182         rte_trace_point_emit_int(handle->fd);
183         rte_trace_point_emit_int(handle->type);
184         rte_trace_point_emit_u32(handle->max_intr);
185         rte_trace_point_emit_u32(handle->nb_efd);
186 )
187
188 /* Memory */
189 RTE_TRACE_POINT(
190         rte_eal_trace_mem_zmalloc,
191         RTE_TRACE_POINT_ARGS(const char *type, size_t size, unsigned int align,
192                 int socket, void *ptr),
193         rte_trace_point_emit_string(type);
194         rte_trace_point_emit_size_t(size);
195         rte_trace_point_emit_u32(align);
196         rte_trace_point_emit_int(socket);
197         rte_trace_point_emit_ptr(ptr);
198 )
199
200 RTE_TRACE_POINT(
201         rte_eal_trace_mem_malloc,
202         RTE_TRACE_POINT_ARGS(const char *type, size_t size, unsigned int align,
203                 int socket, void *ptr),
204         rte_trace_point_emit_string(type);
205         rte_trace_point_emit_size_t(size);
206         rte_trace_point_emit_u32(align);
207         rte_trace_point_emit_int(socket);
208         rte_trace_point_emit_ptr(ptr);
209 )
210
211 RTE_TRACE_POINT(
212         rte_eal_trace_mem_realloc,
213         RTE_TRACE_POINT_ARGS(size_t size, unsigned int align, int socket,
214                 void *ptr),
215         rte_trace_point_emit_size_t(size);
216         rte_trace_point_emit_u32(align);
217         rte_trace_point_emit_int(socket);
218         rte_trace_point_emit_ptr(ptr);
219 )
220
221 RTE_TRACE_POINT(
222         rte_eal_trace_mem_free,
223         RTE_TRACE_POINT_ARGS(void *ptr),
224         rte_trace_point_emit_ptr(ptr);
225 )
226
227 /* Memzone */
228 RTE_TRACE_POINT(
229         rte_eal_trace_memzone_reserve,
230         RTE_TRACE_POINT_ARGS(const char *name, size_t len, int socket_id,
231                 unsigned int flags, unsigned int align, unsigned int bound,
232                 const void *mz),
233         rte_trace_point_emit_string(name);
234         rte_trace_point_emit_size_t(len);
235         rte_trace_point_emit_int(socket_id);
236         rte_trace_point_emit_u32(flags);
237         rte_trace_point_emit_u32(align);
238         rte_trace_point_emit_u32(bound);
239         rte_trace_point_emit_ptr(mz);
240 )
241
242 RTE_TRACE_POINT(
243         rte_eal_trace_memzone_lookup,
244         RTE_TRACE_POINT_ARGS(const char *name, const void *memzone),
245         rte_trace_point_emit_string(name);
246         rte_trace_point_emit_ptr(memzone);
247 )
248
249 RTE_TRACE_POINT(
250         rte_eal_trace_memzone_free,
251         RTE_TRACE_POINT_ARGS(const char *name, void *addr, int rc),
252         rte_trace_point_emit_string(name);
253         rte_trace_point_emit_ptr(addr);
254         rte_trace_point_emit_int(rc);
255 )
256
257 /* Thread */
258 RTE_TRACE_POINT(
259         rte_eal_trace_thread_remote_launch,
260         RTE_TRACE_POINT_ARGS(int (*f)(void *), void *arg,
261                 unsigned int slave_id, int rc),
262         rte_trace_point_emit_ptr(f);
263         rte_trace_point_emit_ptr(arg);
264         rte_trace_point_emit_u32(slave_id);
265         rte_trace_point_emit_int(rc);
266 )
267 RTE_TRACE_POINT(
268         rte_eal_trace_thread_lcore_ready,
269         RTE_TRACE_POINT_ARGS(unsigned int lcore_id, const char *cpuset),
270         rte_trace_point_emit_u32(lcore_id);
271         rte_trace_point_emit_string(cpuset);
272 )
273
274 #ifdef __cplusplus
275 }
276 #endif
277
278 #endif /* _RTE_EAL_TRACE_H_ */