trace: add thread tracepoints
[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_trace_point.h>
20
21 /* Generic */
22 RTE_TRACE_POINT(
23         rte_eal_trace_generic_void,
24         RTE_TRACE_POINT_ARGS(void),
25 )
26
27 RTE_TRACE_POINT(
28         rte_eal_trace_generic_u64,
29         RTE_TRACE_POINT_ARGS(uint64_t in),
30         rte_trace_point_emit_u64(in);
31 )
32
33 RTE_TRACE_POINT(
34         rte_eal_trace_generic_u32,
35         RTE_TRACE_POINT_ARGS(uint32_t in),
36         rte_trace_point_emit_u32(in);
37 )
38
39 RTE_TRACE_POINT(
40         rte_eal_trace_generic_u16,
41         RTE_TRACE_POINT_ARGS(uint16_t in),
42         rte_trace_point_emit_u16(in);
43 )
44
45 RTE_TRACE_POINT(
46         rte_eal_trace_generic_u8,
47         RTE_TRACE_POINT_ARGS(uint8_t in),
48         rte_trace_point_emit_u8(in);
49 )
50
51 RTE_TRACE_POINT(
52         rte_eal_trace_generic_i64,
53         RTE_TRACE_POINT_ARGS(int64_t in),
54         rte_trace_point_emit_i64(in);
55 )
56
57 RTE_TRACE_POINT(
58         rte_eal_trace_generic_i32,
59         RTE_TRACE_POINT_ARGS(int32_t in),
60         rte_trace_point_emit_i32(in);
61 )
62
63 RTE_TRACE_POINT(
64         rte_eal_trace_generic_i16,
65         RTE_TRACE_POINT_ARGS(int16_t in),
66         rte_trace_point_emit_i16(in);
67 )
68
69 RTE_TRACE_POINT(
70         rte_eal_trace_generic_i8,
71         RTE_TRACE_POINT_ARGS(int8_t in),
72         rte_trace_point_emit_i8(in);
73 )
74
75 RTE_TRACE_POINT(
76         rte_eal_trace_generic_int,
77         RTE_TRACE_POINT_ARGS(int in),
78         rte_trace_point_emit_int(in);
79 )
80
81 RTE_TRACE_POINT(
82         rte_eal_trace_generic_long,
83         RTE_TRACE_POINT_ARGS(long in),
84         rte_trace_point_emit_long(in);
85 )
86
87 RTE_TRACE_POINT(
88         rte_eal_trace_generic_float,
89         RTE_TRACE_POINT_ARGS(float in),
90         rte_trace_point_emit_float(in);
91 )
92
93 RTE_TRACE_POINT(
94         rte_eal_trace_generic_double,
95         RTE_TRACE_POINT_ARGS(double in),
96         rte_trace_point_emit_double(in);
97 )
98
99 RTE_TRACE_POINT(
100         rte_eal_trace_generic_ptr,
101         RTE_TRACE_POINT_ARGS(const void *ptr),
102         rte_trace_point_emit_ptr(ptr);
103 )
104
105 RTE_TRACE_POINT(
106         rte_eal_trace_generic_str,
107         RTE_TRACE_POINT_ARGS(const char *str),
108         rte_trace_point_emit_string(str);
109 )
110
111 RTE_TRACE_POINT(
112         rte_eal_trace_generic_func,
113         RTE_TRACE_POINT_ARGS(const char *func),
114         rte_trace_point_emit_string(func);
115 )
116
117 #define RTE_EAL_TRACE_GENERIC_FUNC rte_eal_trace_generic_func(__func__)
118
119 /* Alarm */
120 RTE_TRACE_POINT(
121         rte_eal_trace_alarm_set,
122         RTE_TRACE_POINT_ARGS(uint64_t us, rte_eal_alarm_callback cb_fn,
123                 void *cb_arg, int rc),
124         rte_trace_point_emit_u64(us);
125         rte_trace_point_emit_ptr(cb_fn);
126         rte_trace_point_emit_ptr(cb_arg);
127         rte_trace_point_emit_int(rc);
128 )
129
130 RTE_TRACE_POINT(
131         rte_eal_trace_alarm_cancel,
132         RTE_TRACE_POINT_ARGS(rte_eal_alarm_callback cb_fn, void *cb_arg,
133                 int count),
134         rte_trace_point_emit_ptr(cb_fn);
135         rte_trace_point_emit_ptr(cb_arg);
136         rte_trace_point_emit_int(count);
137 )
138
139 /* Memory */
140 RTE_TRACE_POINT(
141         rte_eal_trace_mem_zmalloc,
142         RTE_TRACE_POINT_ARGS(const char *type, size_t size, unsigned int align,
143                 int socket, void *ptr),
144         rte_trace_point_emit_string(type);
145         rte_trace_point_emit_long(size);
146         rte_trace_point_emit_u32(align);
147         rte_trace_point_emit_int(socket);
148         rte_trace_point_emit_ptr(ptr);
149 )
150
151 RTE_TRACE_POINT(
152         rte_eal_trace_mem_malloc,
153         RTE_TRACE_POINT_ARGS(const char *type, size_t size, unsigned int align,
154                 int socket, void *ptr),
155         rte_trace_point_emit_string(type);
156         rte_trace_point_emit_long(size);
157         rte_trace_point_emit_u32(align);
158         rte_trace_point_emit_int(socket);
159         rte_trace_point_emit_ptr(ptr);
160 )
161
162 RTE_TRACE_POINT(
163         rte_eal_trace_mem_realloc,
164         RTE_TRACE_POINT_ARGS(size_t size, unsigned int align, int socket,
165                 void *ptr),
166         rte_trace_point_emit_long(size);
167         rte_trace_point_emit_u32(align);
168         rte_trace_point_emit_int(socket);
169         rte_trace_point_emit_ptr(ptr);
170 )
171
172 RTE_TRACE_POINT(
173         rte_eal_trace_mem_free,
174         RTE_TRACE_POINT_ARGS(void *ptr),
175         rte_trace_point_emit_ptr(ptr);
176 )
177
178 /* Memzone */
179 RTE_TRACE_POINT(
180         rte_eal_trace_memzone_reserve,
181         RTE_TRACE_POINT_ARGS(const char *name, size_t len, int socket_id,
182                 unsigned int flags, unsigned int align, unsigned int bound,
183                 const void *mz),
184         rte_trace_point_emit_string(name);
185         rte_trace_point_emit_long(len);
186         rte_trace_point_emit_int(socket_id);
187         rte_trace_point_emit_u32(flags);
188         rte_trace_point_emit_u32(align);
189         rte_trace_point_emit_u32(bound);
190         rte_trace_point_emit_ptr(mz);
191 )
192
193 RTE_TRACE_POINT(
194         rte_eal_trace_memzone_lookup,
195         RTE_TRACE_POINT_ARGS(const char *name, const void *memzone),
196         rte_trace_point_emit_string(name);
197         rte_trace_point_emit_ptr(memzone);
198 )
199
200 RTE_TRACE_POINT(
201         rte_eal_trace_memzone_free,
202         RTE_TRACE_POINT_ARGS(const char *name, void *addr, int rc),
203         rte_trace_point_emit_string(name);
204         rte_trace_point_emit_ptr(addr);
205         rte_trace_point_emit_int(rc);
206 )
207
208 /* Thread */
209 RTE_TRACE_POINT(
210         rte_eal_trace_thread_remote_launch,
211         RTE_TRACE_POINT_ARGS(int (*f)(void *), void *arg,
212                 unsigned int slave_id, int rc),
213         rte_trace_point_emit_ptr(f);
214         rte_trace_point_emit_ptr(arg);
215         rte_trace_point_emit_u32(slave_id);
216         rte_trace_point_emit_int(rc);
217 )
218 RTE_TRACE_POINT(
219         rte_eal_trace_thread_lcore_ready,
220         RTE_TRACE_POINT_ARGS(unsigned int lcore_id, const char *cpuset),
221         rte_trace_point_emit_u32(lcore_id);
222         rte_trace_point_emit_string(cpuset);
223 )
224
225 #ifdef __cplusplus
226 }
227 #endif
228
229 #endif /* _RTE_EAL_TRACE_H_ */