interrupts: make interrupt handle structure opaque
[dpdk.git] / lib / 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 #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->vfio_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->vfio_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->vfio_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->vfio_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_ */