Commit | Line | Data |
---|---|---|
f611d0c3 MD |
1 | // SPDX-License-Identifier: MIT |
2 | /* | |
3 | * Copyright 2022 Mathieu Desnoyers <mathieu.desnoyers@efficios.com> | |
4 | */ | |
5 | ||
6 | #include <stdint.h> | |
7 | #include <inttypes.h> | |
8 | #include <stdlib.h> | |
9 | #include <stdio.h> | |
4f40d951 | 10 | #include <stdbool.h> |
f611d0c3 MD |
11 | |
12 | #include <side/trace.h> | |
13 | #include "tracer.h" | |
14 | ||
15 | /* User code example */ | |
16 | ||
89747802 | 17 | side_static_event(my_provider_event, "myprovider", "myevent", SIDE_LOGLEVEL_DEBUG, |
f611d0c3 | 18 | side_field_list( |
485b800a MD |
19 | side_field_u32("abc", side_attr_list()), |
20 | side_field_s64("def", side_attr_list()), | |
21 | side_field_dynamic("dynamic", side_attr_list()), | |
399c836b MD |
22 | ), |
23 | side_attr_list() | |
f611d0c3 MD |
24 | ); |
25 | ||
26 | static | |
27 | void test_fields(void) | |
28 | { | |
29 | uint32_t uw = 42; | |
30 | int64_t sdw = -500; | |
31 | ||
89747802 | 32 | side_event_enable__my_provider_event = 1; |
d5cdb129 | 33 | side_event(my_provider_event, side_arg_list(side_arg_u32(uw), side_arg_s64(sdw), |
808bd9bf | 34 | side_arg_dynamic(side_arg_dynamic_string("zzz", side_attr_list())))); |
f611d0c3 MD |
35 | } |
36 | ||
89747802 MD |
37 | side_hidden_event(my_provider_event_hidden, "myprovider", "myeventhidden", SIDE_LOGLEVEL_DEBUG, |
38 | side_field_list( | |
39 | side_field_u32("abc", side_attr_list()), | |
40 | ), | |
41 | side_attr_list() | |
42 | ); | |
43 | ||
44 | static | |
45 | void test_event_hidden(void) | |
46 | { | |
47 | side_event_enable__my_provider_event_hidden = 1; | |
48 | side_event(my_provider_event_hidden, side_arg_list(side_arg_u32(2))); | |
49 | } | |
50 | ||
51 | side_declare_event(my_provider_event_export); | |
52 | ||
53 | side_export_event(my_provider_event_export, "myprovider", "myeventexport", SIDE_LOGLEVEL_DEBUG, | |
54 | side_field_list( | |
55 | side_field_u32("abc", side_attr_list()), | |
56 | ), | |
57 | side_attr_list() | |
58 | ); | |
59 | ||
60 | static | |
61 | void test_event_export(void) | |
62 | { | |
63 | side_event_enable__my_provider_event_export = 1; | |
64 | side_event(my_provider_event_export, side_arg_list(side_arg_u32(2))); | |
65 | } | |
66 | ||
67 | side_static_event(my_provider_event_struct_literal, "myprovider", "myeventstructliteral", SIDE_LOGLEVEL_DEBUG, | |
f611d0c3 | 68 | side_field_list( |
c7a14585 MD |
69 | side_field_struct("structliteral", |
70 | side_struct_literal( | |
71 | side_field_list( | |
72 | side_field_u32("x", side_attr_list()), | |
73 | side_field_s64("y", side_attr_list()), | |
74 | ), | |
75 | side_attr_list() | |
76 | ) | |
f611d0c3 | 77 | ), |
485b800a | 78 | side_field_u8("z", side_attr_list()), |
399c836b MD |
79 | ), |
80 | side_attr_list() | |
f611d0c3 MD |
81 | ); |
82 | ||
c7a14585 MD |
83 | static |
84 | void test_struct_literal(void) | |
85 | { | |
89747802 | 86 | side_event_enable__my_provider_event_struct_literal = 1; |
c7a14585 MD |
87 | side_event_cond(my_provider_event_struct_literal) { |
88 | side_arg_define_vec(mystruct, side_arg_list(side_arg_u32(21), side_arg_s64(22))); | |
89 | side_event_call(my_provider_event_struct_literal, side_arg_list(side_arg_struct(&mystruct), side_arg_u8(55))); | |
90 | } | |
91 | } | |
92 | ||
93 | static side_define_struct(mystructdef, | |
94 | side_field_list( | |
95 | side_field_u32("x", side_attr_list()), | |
96 | side_field_s64("y", side_attr_list()), | |
97 | ), | |
98 | side_attr_list() | |
99 | ); | |
100 | ||
89747802 | 101 | side_static_event(my_provider_event_struct, "myprovider", "myeventstruct", SIDE_LOGLEVEL_DEBUG, |
c7a14585 MD |
102 | side_field_list( |
103 | side_field_struct("struct", &mystructdef), | |
104 | side_field_u8("z", side_attr_list()), | |
105 | ), | |
106 | side_attr_list() | |
107 | ); | |
108 | ||
f611d0c3 MD |
109 | static |
110 | void test_struct(void) | |
111 | { | |
89747802 | 112 | side_event_enable__my_provider_event_struct = 1; |
c7a14585 | 113 | side_event_cond(my_provider_event_struct) { |
f611d0c3 | 114 | side_arg_define_vec(mystruct, side_arg_list(side_arg_u32(21), side_arg_s64(22))); |
c7a14585 | 115 | side_event_call(my_provider_event_struct, side_arg_list(side_arg_struct(&mystruct), side_arg_u8(55))); |
f611d0c3 MD |
116 | } |
117 | } | |
118 | ||
89747802 | 119 | side_static_event(my_provider_event_array, "myprovider", "myarray", SIDE_LOGLEVEL_DEBUG, |
f611d0c3 | 120 | side_field_list( |
9a55f555 | 121 | side_field_array("arr", side_elem(side_type_u32(side_attr_list())), 3, side_attr_list()), |
485b800a | 122 | side_field_s64("v", side_attr_list()), |
399c836b MD |
123 | ), |
124 | side_attr_list() | |
f611d0c3 MD |
125 | ); |
126 | ||
127 | static | |
128 | void test_array(void) | |
129 | { | |
89747802 | 130 | side_event_enable__my_provider_event_array = 1; |
d5cdb129 | 131 | side_event_cond(my_provider_event_array) { |
f611d0c3 | 132 | side_arg_define_vec(myarray, side_arg_list(side_arg_u32(1), side_arg_u32(2), side_arg_u32(3))); |
d5cdb129 | 133 | side_event_call(my_provider_event_array, side_arg_list(side_arg_array(&myarray), side_arg_s64(42))); |
f611d0c3 MD |
134 | } |
135 | } | |
136 | ||
89747802 | 137 | side_static_event(my_provider_event_vla, "myprovider", "myvla", SIDE_LOGLEVEL_DEBUG, |
f611d0c3 | 138 | side_field_list( |
9a55f555 | 139 | side_field_vla("vla", side_elem(side_type_u32(side_attr_list())), side_attr_list()), |
485b800a | 140 | side_field_s64("v", side_attr_list()), |
399c836b MD |
141 | ), |
142 | side_attr_list() | |
f611d0c3 MD |
143 | ); |
144 | ||
145 | static | |
146 | void test_vla(void) | |
147 | { | |
89747802 | 148 | side_event_enable__my_provider_event_vla = 1; |
d5cdb129 | 149 | side_event_cond(my_provider_event_vla) { |
f611d0c3 | 150 | side_arg_define_vec(myvla, side_arg_list(side_arg_u32(1), side_arg_u32(2), side_arg_u32(3))); |
d5cdb129 | 151 | side_event_call(my_provider_event_vla, side_arg_list(side_arg_vla(&myvla), side_arg_s64(42))); |
f611d0c3 MD |
152 | } |
153 | } | |
154 | ||
cdd6e858 MD |
155 | /* 1D array visitor */ |
156 | ||
f611d0c3 MD |
157 | struct app_visitor_ctx { |
158 | const uint32_t *ptr; | |
352a4b77 | 159 | uint32_t length; |
f611d0c3 MD |
160 | }; |
161 | ||
352a4b77 MD |
162 | static |
163 | enum side_visitor_status test_visitor(const struct side_tracer_visitor_ctx *tracer_ctx, void *_ctx) | |
f611d0c3 MD |
164 | { |
165 | struct app_visitor_ctx *ctx = (struct app_visitor_ctx *) _ctx; | |
352a4b77 MD |
166 | uint32_t length = ctx->length, i; |
167 | ||
168 | for (i = 0; i < length; i++) { | |
ffb5c809 MD |
169 | const struct side_arg_vec elem = side_arg_u32(ctx->ptr[i]); |
170 | ||
db6ecef9 MD |
171 | if (tracer_ctx->write_elem(tracer_ctx, &elem) != SIDE_VISITOR_STATUS_OK) |
172 | return SIDE_VISITOR_STATUS_ERROR; | |
352a4b77 | 173 | } |
f611d0c3 MD |
174 | return SIDE_VISITOR_STATUS_OK; |
175 | } | |
176 | ||
177 | static uint32_t testarray[] = { 1, 2, 3, 4, 5, 6, 7, 8 }; | |
178 | ||
89747802 | 179 | side_static_event(my_provider_event_vla_visitor, "myprovider", "myvlavisit", SIDE_LOGLEVEL_DEBUG, |
f611d0c3 | 180 | side_field_list( |
9a55f555 | 181 | side_field_vla_visitor("vlavisit", side_elem(side_type_u32(side_attr_list())), test_visitor, side_attr_list()), |
485b800a | 182 | side_field_s64("v", side_attr_list()), |
399c836b MD |
183 | ), |
184 | side_attr_list() | |
f611d0c3 MD |
185 | ); |
186 | ||
187 | static | |
188 | void test_vla_visitor(void) | |
189 | { | |
89747802 | 190 | side_event_enable__my_provider_event_vla_visitor = 1; |
d5cdb129 | 191 | side_event_cond(my_provider_event_vla_visitor) { |
f611d0c3 MD |
192 | struct app_visitor_ctx ctx = { |
193 | .ptr = testarray, | |
352a4b77 | 194 | .length = SIDE_ARRAY_SIZE(testarray), |
f611d0c3 | 195 | }; |
d5cdb129 | 196 | side_event_call(my_provider_event_vla_visitor, side_arg_list(side_arg_vla_visitor(&ctx), side_arg_s64(42))); |
f611d0c3 MD |
197 | } |
198 | } | |
199 | ||
cdd6e858 MD |
200 | /* 2D array visitor */ |
201 | ||
202 | struct app_visitor_2d_inner_ctx { | |
203 | const uint32_t *ptr; | |
204 | uint32_t length; | |
205 | }; | |
206 | ||
207 | static | |
208 | enum side_visitor_status test_inner_visitor(const struct side_tracer_visitor_ctx *tracer_ctx, void *_ctx) | |
209 | { | |
210 | struct app_visitor_2d_inner_ctx *ctx = (struct app_visitor_2d_inner_ctx *) _ctx; | |
211 | uint32_t length = ctx->length, i; | |
212 | ||
213 | for (i = 0; i < length; i++) { | |
ffb5c809 MD |
214 | const struct side_arg_vec elem = side_arg_u32(ctx->ptr[i]); |
215 | ||
db6ecef9 MD |
216 | if (tracer_ctx->write_elem(tracer_ctx, &elem) != SIDE_VISITOR_STATUS_OK) |
217 | return SIDE_VISITOR_STATUS_ERROR; | |
cdd6e858 MD |
218 | } |
219 | return SIDE_VISITOR_STATUS_OK; | |
220 | } | |
221 | ||
222 | struct app_visitor_2d_outer_ctx { | |
223 | const uint32_t (*ptr)[2]; | |
224 | uint32_t length; | |
225 | }; | |
226 | ||
227 | static | |
228 | enum side_visitor_status test_outer_visitor(const struct side_tracer_visitor_ctx *tracer_ctx, void *_ctx) | |
229 | { | |
230 | struct app_visitor_2d_outer_ctx *ctx = (struct app_visitor_2d_outer_ctx *) _ctx; | |
231 | uint32_t length = ctx->length, i; | |
232 | ||
233 | for (i = 0; i < length; i++) { | |
234 | struct app_visitor_2d_inner_ctx inner_ctx = { | |
235 | .ptr = ctx->ptr[i], | |
236 | .length = 2, | |
237 | }; | |
238 | const struct side_arg_vec elem = side_arg_vla_visitor(&inner_ctx); | |
db6ecef9 MD |
239 | if (tracer_ctx->write_elem(tracer_ctx, &elem) != SIDE_VISITOR_STATUS_OK) |
240 | return SIDE_VISITOR_STATUS_ERROR; | |
cdd6e858 MD |
241 | } |
242 | return SIDE_VISITOR_STATUS_OK; | |
243 | } | |
244 | ||
245 | static uint32_t testarray2d[][2] = { | |
246 | { 1, 2 }, | |
247 | { 33, 44 }, | |
248 | { 55, 66 }, | |
249 | }; | |
250 | ||
89747802 | 251 | side_static_event(my_provider_event_vla_visitor2d, "myprovider", "myvlavisit2d", SIDE_LOGLEVEL_DEBUG, |
cdd6e858 MD |
252 | side_field_list( |
253 | side_field_vla_visitor("vlavisit2d", | |
f37a556f | 254 | side_elem( |
32ba58fc | 255 | side_type_vla_visitor( |
9a55f555 | 256 | side_elem(side_type_u32(side_attr_list())), |
f37a556f MD |
257 | test_inner_visitor, |
258 | side_attr_list()) | |
259 | ), test_outer_visitor, side_attr_list()), | |
485b800a | 260 | side_field_s64("v", side_attr_list()), |
399c836b MD |
261 | ), |
262 | side_attr_list() | |
cdd6e858 MD |
263 | ); |
264 | ||
265 | static | |
266 | void test_vla_visitor_2d(void) | |
267 | { | |
89747802 | 268 | side_event_enable__my_provider_event_vla_visitor2d = 1; |
d5cdb129 | 269 | side_event_cond(my_provider_event_vla_visitor2d) { |
cdd6e858 MD |
270 | struct app_visitor_2d_outer_ctx ctx = { |
271 | .ptr = testarray2d, | |
272 | .length = SIDE_ARRAY_SIZE(testarray2d), | |
273 | }; | |
d5cdb129 | 274 | side_event_call(my_provider_event_vla_visitor2d, side_arg_list(side_arg_vla_visitor(&ctx), side_arg_s64(42))); |
cdd6e858 MD |
275 | } |
276 | } | |
277 | ||
ba845af5 MD |
278 | static int64_t array_fixint[] = { -444, 555, 123, 2897432587 }; |
279 | ||
89747802 | 280 | side_static_event(my_provider_event_array_fixint, "myprovider", "myarrayfixint", SIDE_LOGLEVEL_DEBUG, |
ba845af5 | 281 | side_field_list( |
9a55f555 | 282 | side_field_array("arrfixint", side_elem(side_type_s64(side_attr_list())), SIDE_ARRAY_SIZE(array_fixint), side_attr_list()), |
485b800a | 283 | side_field_s64("v", side_attr_list()), |
399c836b MD |
284 | ), |
285 | side_attr_list() | |
ba845af5 MD |
286 | ); |
287 | ||
288 | static | |
289 | void test_array_fixint(void) | |
290 | { | |
89747802 | 291 | side_event_enable__my_provider_event_array_fixint = 1; |
d5cdb129 | 292 | side_event(my_provider_event_array_fixint, |
1533629f MD |
293 | side_arg_list(side_arg_array_s64(array_fixint), side_arg_s64(42))); |
294 | } | |
295 | ||
296 | static int64_t vla_fixint[] = { -444, 555, 123, 2897432587 }; | |
297 | ||
89747802 | 298 | side_static_event(my_provider_event_vla_fixint, "myprovider", "myvlafixint", SIDE_LOGLEVEL_DEBUG, |
1533629f | 299 | side_field_list( |
9a55f555 | 300 | side_field_vla("vlafixint", side_elem(side_type_s64(side_attr_list())), side_attr_list()), |
485b800a | 301 | side_field_s64("v", side_attr_list()), |
399c836b MD |
302 | ), |
303 | side_attr_list() | |
1533629f MD |
304 | ); |
305 | ||
306 | static | |
307 | void test_vla_fixint(void) | |
308 | { | |
89747802 | 309 | side_event_enable__my_provider_event_vla_fixint = 1; |
d5cdb129 | 310 | side_event(my_provider_event_vla_fixint, |
1533629f | 311 | side_arg_list(side_arg_vla_s64(vla_fixint, SIDE_ARRAY_SIZE(vla_fixint)), side_arg_s64(42))); |
ba845af5 MD |
312 | } |
313 | ||
89747802 | 314 | side_static_event(my_provider_event_dynamic_basic, |
a2e2357e MD |
315 | "myprovider", "mydynamicbasic", SIDE_LOGLEVEL_DEBUG, |
316 | side_field_list( | |
485b800a | 317 | side_field_dynamic("dynamic", side_attr_list()), |
399c836b MD |
318 | ), |
319 | side_attr_list() | |
a2e2357e MD |
320 | ); |
321 | ||
322 | static | |
323 | void test_dynamic_basic_type(void) | |
324 | { | |
89747802 | 325 | side_event_enable__my_provider_event_dynamic_basic = 1; |
d5cdb129 | 326 | side_event(my_provider_event_dynamic_basic, |
808bd9bf | 327 | side_arg_list(side_arg_dynamic(side_arg_dynamic_s16(-33, side_attr_list())))); |
a2e2357e MD |
328 | } |
329 | ||
89747802 | 330 | side_static_event(my_provider_event_dynamic_vla, |
a2e2357e MD |
331 | "myprovider", "mydynamicvla", SIDE_LOGLEVEL_DEBUG, |
332 | side_field_list( | |
485b800a | 333 | side_field_dynamic("dynamic", side_attr_list()), |
399c836b MD |
334 | ), |
335 | side_attr_list() | |
a2e2357e MD |
336 | ); |
337 | ||
338 | static | |
339 | void test_dynamic_vla(void) | |
340 | { | |
948e3e72 MD |
341 | side_arg_dynamic_define_vec(myvla, |
342 | side_arg_list( | |
808bd9bf MD |
343 | side_arg_dynamic_u32(1, side_attr_list()), |
344 | side_arg_dynamic_u32(2, side_attr_list()), | |
345 | side_arg_dynamic_u32(3, side_attr_list()), | |
8d20e708 MD |
346 | ), |
347 | side_attr_list() | |
df075fa5 | 348 | ); |
89747802 | 349 | side_event_enable__my_provider_event_dynamic_vla = 1; |
d5cdb129 | 350 | side_event(my_provider_event_dynamic_vla, |
8d20e708 | 351 | side_arg_list(side_arg_dynamic(side_arg_dynamic_vla(&myvla)))); |
a2e2357e MD |
352 | } |
353 | ||
89747802 | 354 | side_static_event(my_provider_event_dynamic_null, |
465e5e7e MD |
355 | "myprovider", "mydynamicnull", SIDE_LOGLEVEL_DEBUG, |
356 | side_field_list( | |
485b800a | 357 | side_field_dynamic("dynamic", side_attr_list()), |
399c836b MD |
358 | ), |
359 | side_attr_list() | |
465e5e7e MD |
360 | ); |
361 | ||
362 | static | |
363 | void test_dynamic_null(void) | |
364 | { | |
89747802 | 365 | side_event_enable__my_provider_event_dynamic_null = 1; |
d5cdb129 | 366 | side_event(my_provider_event_dynamic_null, |
808bd9bf | 367 | side_arg_list(side_arg_dynamic(side_arg_dynamic_null(side_attr_list())))); |
465e5e7e MD |
368 | } |
369 | ||
89747802 | 370 | side_static_event(my_provider_event_dynamic_struct, |
c208889e | 371 | "myprovider", "mydynamicstruct", SIDE_LOGLEVEL_DEBUG, |
465e5e7e | 372 | side_field_list( |
485b800a | 373 | side_field_dynamic("dynamic", side_attr_list()), |
399c836b MD |
374 | ), |
375 | side_attr_list() | |
465e5e7e MD |
376 | ); |
377 | ||
378 | static | |
c208889e | 379 | void test_dynamic_struct(void) |
465e5e7e | 380 | { |
c208889e | 381 | side_arg_dynamic_define_struct(mystruct, |
465e5e7e | 382 | side_arg_list( |
808bd9bf MD |
383 | side_arg_dynamic_field("a", side_arg_dynamic_u32(43, side_attr_list())), |
384 | side_arg_dynamic_field("b", side_arg_dynamic_string("zzz", side_attr_list())), | |
385 | side_arg_dynamic_field("c", side_arg_dynamic_null(side_attr_list())), | |
8d20e708 MD |
386 | ), |
387 | side_attr_list() | |
465e5e7e MD |
388 | ); |
389 | ||
89747802 | 390 | side_event_enable__my_provider_event_dynamic_struct = 1; |
d5cdb129 | 391 | side_event(my_provider_event_dynamic_struct, |
8d20e708 | 392 | side_arg_list(side_arg_dynamic(side_arg_dynamic_struct(&mystruct)))); |
465e5e7e MD |
393 | } |
394 | ||
89747802 | 395 | side_static_event(my_provider_event_dynamic_nested_struct, |
c208889e | 396 | "myprovider", "mydynamicnestedstruct", SIDE_LOGLEVEL_DEBUG, |
3222d397 | 397 | side_field_list( |
485b800a | 398 | side_field_dynamic("dynamic", side_attr_list()), |
399c836b MD |
399 | ), |
400 | side_attr_list() | |
3222d397 MD |
401 | ); |
402 | ||
403 | static | |
c208889e | 404 | void test_dynamic_nested_struct(void) |
3222d397 | 405 | { |
c208889e | 406 | side_arg_dynamic_define_struct(nested, |
3222d397 | 407 | side_arg_list( |
808bd9bf MD |
408 | side_arg_dynamic_field("a", side_arg_dynamic_u32(43, side_attr_list())), |
409 | side_arg_dynamic_field("b", side_arg_dynamic_u8(55, side_attr_list())), | |
8d20e708 MD |
410 | ), |
411 | side_attr_list() | |
3222d397 | 412 | ); |
c208889e | 413 | side_arg_dynamic_define_struct(nested2, |
3222d397 | 414 | side_arg_list( |
808bd9bf MD |
415 | side_arg_dynamic_field("aa", side_arg_dynamic_u64(128, side_attr_list())), |
416 | side_arg_dynamic_field("bb", side_arg_dynamic_u16(1, side_attr_list())), | |
8d20e708 MD |
417 | ), |
418 | side_attr_list() | |
3222d397 | 419 | ); |
c208889e | 420 | side_arg_dynamic_define_struct(mystruct, |
3222d397 | 421 | side_arg_list( |
8d20e708 MD |
422 | side_arg_dynamic_field("nested", side_arg_dynamic_struct(&nested)), |
423 | side_arg_dynamic_field("nested2", side_arg_dynamic_struct(&nested2)), | |
424 | ), | |
425 | side_attr_list() | |
3222d397 | 426 | ); |
89747802 | 427 | side_event_enable__my_provider_event_dynamic_nested_struct = 1; |
d5cdb129 | 428 | side_event(my_provider_event_dynamic_nested_struct, |
8d20e708 | 429 | side_arg_list(side_arg_dynamic(side_arg_dynamic_struct(&mystruct)))); |
3222d397 MD |
430 | } |
431 | ||
89747802 | 432 | side_static_event(my_provider_event_dynamic_vla_struct, |
c208889e | 433 | "myprovider", "mydynamicvlastruct", SIDE_LOGLEVEL_DEBUG, |
7ce1b78f | 434 | side_field_list( |
485b800a | 435 | side_field_dynamic("dynamic", side_attr_list()), |
399c836b MD |
436 | ), |
437 | side_attr_list() | |
7ce1b78f MD |
438 | ); |
439 | ||
440 | static | |
c208889e | 441 | void test_dynamic_vla_struct(void) |
7ce1b78f | 442 | { |
c208889e | 443 | side_arg_dynamic_define_struct(nested, |
7ce1b78f | 444 | side_arg_list( |
808bd9bf MD |
445 | side_arg_dynamic_field("a", side_arg_dynamic_u32(43, side_attr_list())), |
446 | side_arg_dynamic_field("b", side_arg_dynamic_u8(55, side_attr_list())), | |
8d20e708 MD |
447 | ), |
448 | side_attr_list() | |
7ce1b78f MD |
449 | ); |
450 | side_arg_dynamic_define_vec(myvla, | |
451 | side_arg_list( | |
8d20e708 MD |
452 | side_arg_dynamic_struct(&nested), |
453 | side_arg_dynamic_struct(&nested), | |
454 | side_arg_dynamic_struct(&nested), | |
455 | side_arg_dynamic_struct(&nested), | |
456 | ), | |
457 | side_attr_list() | |
7ce1b78f | 458 | ); |
89747802 | 459 | side_event_enable__my_provider_event_dynamic_vla_struct = 1; |
d5cdb129 | 460 | side_event(my_provider_event_dynamic_vla_struct, |
8d20e708 | 461 | side_arg_list(side_arg_dynamic(side_arg_dynamic_vla(&myvla)))); |
7ce1b78f MD |
462 | } |
463 | ||
89747802 | 464 | side_static_event(my_provider_event_dynamic_struct_vla, |
c208889e | 465 | "myprovider", "mydynamicstructvla", SIDE_LOGLEVEL_DEBUG, |
980bfdc4 | 466 | side_field_list( |
485b800a | 467 | side_field_dynamic("dynamic", side_attr_list()), |
399c836b MD |
468 | ), |
469 | side_attr_list() | |
980bfdc4 MD |
470 | ); |
471 | ||
472 | static | |
c208889e | 473 | void test_dynamic_struct_vla(void) |
980bfdc4 MD |
474 | { |
475 | side_arg_dynamic_define_vec(myvla, | |
948e3e72 | 476 | side_arg_list( |
808bd9bf MD |
477 | side_arg_dynamic_u32(1, side_attr_list()), |
478 | side_arg_dynamic_u32(2, side_attr_list()), | |
479 | side_arg_dynamic_u32(3, side_attr_list()), | |
8d20e708 MD |
480 | ), |
481 | side_attr_list() | |
df075fa5 | 482 | ); |
980bfdc4 | 483 | side_arg_dynamic_define_vec(myvla2, |
948e3e72 | 484 | side_arg_list( |
808bd9bf MD |
485 | side_arg_dynamic_u32(4, side_attr_list()), |
486 | side_arg_dynamic_u64(5, side_attr_list()), | |
487 | side_arg_dynamic_u32(6, side_attr_list()), | |
8d20e708 MD |
488 | ), |
489 | side_attr_list() | |
df075fa5 | 490 | ); |
c208889e | 491 | side_arg_dynamic_define_struct(mystruct, |
980bfdc4 | 492 | side_arg_list( |
8d20e708 MD |
493 | side_arg_dynamic_field("a", side_arg_dynamic_vla(&myvla)), |
494 | side_arg_dynamic_field("b", side_arg_dynamic_vla(&myvla2)), | |
495 | ), | |
496 | side_attr_list() | |
980bfdc4 | 497 | ); |
89747802 | 498 | side_event_enable__my_provider_event_dynamic_struct_vla = 1; |
d5cdb129 | 499 | side_event(my_provider_event_dynamic_struct_vla, |
8d20e708 | 500 | side_arg_list(side_arg_dynamic(side_arg_dynamic_struct(&mystruct)))); |
980bfdc4 MD |
501 | } |
502 | ||
89747802 | 503 | side_static_event(my_provider_event_dynamic_nested_vla, |
948e3e72 MD |
504 | "myprovider", "mydynamicnestedvla", SIDE_LOGLEVEL_DEBUG, |
505 | side_field_list( | |
485b800a | 506 | side_field_dynamic("dynamic", side_attr_list()), |
399c836b MD |
507 | ), |
508 | side_attr_list() | |
948e3e72 MD |
509 | ); |
510 | ||
511 | static | |
512 | void test_dynamic_nested_vla(void) | |
513 | { | |
514 | side_arg_dynamic_define_vec(nestedvla, | |
515 | side_arg_list( | |
808bd9bf MD |
516 | side_arg_dynamic_u32(1, side_attr_list()), |
517 | side_arg_dynamic_u16(2, side_attr_list()), | |
518 | side_arg_dynamic_u32(3, side_attr_list()), | |
8d20e708 MD |
519 | ), |
520 | side_attr_list() | |
948e3e72 MD |
521 | ); |
522 | side_arg_dynamic_define_vec(nestedvla2, | |
523 | side_arg_list( | |
808bd9bf MD |
524 | side_arg_dynamic_u8(4, side_attr_list()), |
525 | side_arg_dynamic_u32(5, side_attr_list()), | |
526 | side_arg_dynamic_u32(6, side_attr_list()), | |
8d20e708 MD |
527 | ), |
528 | side_attr_list() | |
948e3e72 MD |
529 | ); |
530 | side_arg_dynamic_define_vec(myvla, | |
531 | side_arg_list( | |
8d20e708 MD |
532 | side_arg_dynamic_vla(&nestedvla), |
533 | side_arg_dynamic_vla(&nestedvla2), | |
534 | ), | |
535 | side_attr_list() | |
948e3e72 | 536 | ); |
89747802 | 537 | side_event_enable__my_provider_event_dynamic_nested_vla = 1; |
d5cdb129 | 538 | side_event(my_provider_event_dynamic_nested_vla, |
8d20e708 | 539 | side_arg_list(side_arg_dynamic(side_arg_dynamic_vla(&myvla)))); |
948e3e72 MD |
540 | } |
541 | ||
89747802 | 542 | side_static_event_variadic(my_provider_event_variadic, |
19fa6aa2 | 543 | "myprovider", "myvariadicevent", SIDE_LOGLEVEL_DEBUG, |
399c836b MD |
544 | side_field_list(), |
545 | side_attr_list() | |
19fa6aa2 MD |
546 | ); |
547 | ||
548 | static | |
549 | void test_variadic(void) | |
550 | { | |
89747802 | 551 | side_event_enable__my_provider_event_variadic = 1; |
d5cdb129 | 552 | side_event_variadic(my_provider_event_variadic, |
19fa6aa2 MD |
553 | side_arg_list(), |
554 | side_arg_list( | |
808bd9bf MD |
555 | side_arg_dynamic_field("a", side_arg_dynamic_u32(55, side_attr_list())), |
556 | side_arg_dynamic_field("b", side_arg_dynamic_s8(-4, side_attr_list())), | |
8d20e708 MD |
557 | ), |
558 | side_attr_list() | |
19fa6aa2 MD |
559 | ); |
560 | } | |
561 | ||
89747802 | 562 | side_static_event_variadic(my_provider_event_static_variadic, |
41c4d119 MD |
563 | "myprovider", "mystaticvariadicevent", SIDE_LOGLEVEL_DEBUG, |
564 | side_field_list( | |
485b800a MD |
565 | side_field_u32("abc", side_attr_list()), |
566 | side_field_u16("def", side_attr_list()), | |
399c836b MD |
567 | ), |
568 | side_attr_list() | |
41c4d119 MD |
569 | ); |
570 | ||
571 | static | |
572 | void test_static_variadic(void) | |
573 | { | |
89747802 | 574 | side_event_enable__my_provider_event_static_variadic = 1; |
d5cdb129 | 575 | side_event_variadic(my_provider_event_static_variadic, |
41c4d119 MD |
576 | side_arg_list( |
577 | side_arg_u32(1), | |
578 | side_arg_u16(2), | |
579 | ), | |
580 | side_arg_list( | |
808bd9bf MD |
581 | side_arg_dynamic_field("a", side_arg_dynamic_u32(55, side_attr_list())), |
582 | side_arg_dynamic_field("b", side_arg_dynamic_s8(-4, side_attr_list())), | |
8d20e708 MD |
583 | ), |
584 | side_attr_list() | |
41c4d119 MD |
585 | ); |
586 | } | |
587 | ||
89747802 | 588 | side_static_event(my_provider_event_bool, "myprovider", "myeventbool", SIDE_LOGLEVEL_DEBUG, |
4f40d951 | 589 | side_field_list( |
485b800a MD |
590 | side_field_bool("a_false", side_attr_list()), |
591 | side_field_bool("b_true", side_attr_list()), | |
592 | side_field_bool("c_true", side_attr_list()), | |
593 | side_field_bool("d_true", side_attr_list()), | |
594 | side_field_bool("e_true", side_attr_list()), | |
595 | side_field_bool("f_false", side_attr_list()), | |
596 | side_field_bool("g_true", side_attr_list()), | |
399c836b MD |
597 | ), |
598 | side_attr_list() | |
4f40d951 MD |
599 | ); |
600 | ||
601 | static | |
602 | void test_bool(void) | |
603 | { | |
604 | uint32_t a = 0; | |
605 | uint32_t b = 1; | |
606 | uint64_t c = 0x12345678; | |
607 | int16_t d = -32768; | |
608 | bool e = true; | |
609 | bool f = false; | |
610 | uint32_t g = 256; | |
611 | ||
89747802 | 612 | side_event_enable__my_provider_event_bool = 1; |
d5cdb129 | 613 | side_event(my_provider_event_bool, |
4f40d951 MD |
614 | side_arg_list( |
615 | side_arg_bool(a), | |
616 | side_arg_bool(b), | |
617 | side_arg_bool(c), | |
618 | side_arg_bool(d), | |
619 | side_arg_bool(e), | |
620 | side_arg_bool(f), | |
621 | side_arg_bool(g), | |
622 | ) | |
623 | ); | |
624 | } | |
625 | ||
89747802 | 626 | side_static_event_variadic(my_provider_event_dynamic_bool, |
4f40d951 | 627 | "myprovider", "mydynamicbool", SIDE_LOGLEVEL_DEBUG, |
399c836b MD |
628 | side_field_list(), |
629 | side_attr_list() | |
4f40d951 MD |
630 | ); |
631 | ||
632 | static | |
633 | void test_dynamic_bool(void) | |
634 | { | |
89747802 | 635 | side_event_enable__my_provider_event_dynamic_bool = 1; |
d5cdb129 | 636 | side_event_variadic(my_provider_event_dynamic_bool, |
4f40d951 MD |
637 | side_arg_list(), |
638 | side_arg_list( | |
808bd9bf MD |
639 | side_arg_dynamic_field("a_true", side_arg_dynamic_bool(55, side_attr_list())), |
640 | side_arg_dynamic_field("b_true", side_arg_dynamic_bool(-4, side_attr_list())), | |
641 | side_arg_dynamic_field("c_false", side_arg_dynamic_bool(0, side_attr_list())), | |
642 | side_arg_dynamic_field("d_true", side_arg_dynamic_bool(256, side_attr_list())), | |
8d20e708 MD |
643 | ), |
644 | side_attr_list() | |
4f40d951 MD |
645 | ); |
646 | } | |
647 | ||
89747802 | 648 | side_static_event(my_provider_event_dynamic_vla_visitor, |
8ceca0cd MD |
649 | "myprovider", "mydynamicvlavisitor", SIDE_LOGLEVEL_DEBUG, |
650 | side_field_list( | |
485b800a | 651 | side_field_dynamic("dynamic", side_attr_list()), |
399c836b MD |
652 | ), |
653 | side_attr_list() | |
8ceca0cd MD |
654 | ); |
655 | ||
656 | struct app_dynamic_vla_visitor_ctx { | |
657 | const uint32_t *ptr; | |
658 | uint32_t length; | |
659 | }; | |
660 | ||
661 | static | |
662 | enum side_visitor_status test_dynamic_vla_visitor(const struct side_tracer_dynamic_vla_visitor_ctx *tracer_ctx, void *_ctx) | |
663 | { | |
664 | struct app_dynamic_vla_visitor_ctx *ctx = (struct app_dynamic_vla_visitor_ctx *) _ctx; | |
665 | uint32_t length = ctx->length, i; | |
666 | ||
667 | for (i = 0; i < length; i++) { | |
668 | const struct side_arg_dynamic_vec elem = { | |
669 | .dynamic_type = SIDE_DYNAMIC_TYPE_U32, | |
670 | .u = { | |
8d20e708 MD |
671 | .side_basic = { |
672 | .attr = NULL, | |
673 | .nr_attr = 0, | |
674 | .u = { | |
675 | .side_u32 = ctx->ptr[i], | |
676 | }, | |
677 | }, | |
8ceca0cd MD |
678 | }, |
679 | }; | |
680 | if (tracer_ctx->write_elem(tracer_ctx, &elem) != SIDE_VISITOR_STATUS_OK) | |
681 | return SIDE_VISITOR_STATUS_ERROR; | |
682 | } | |
683 | return SIDE_VISITOR_STATUS_OK; | |
684 | } | |
685 | ||
686 | static uint32_t testarray_dynamic_vla[] = { 1, 2, 3, 4, 5, 6, 7, 8 }; | |
687 | ||
688 | static | |
689 | void test_dynamic_vla_with_visitor(void) | |
690 | { | |
89747802 | 691 | side_event_enable__my_provider_event_dynamic_vla_visitor = 1; |
d5cdb129 | 692 | side_event_cond(my_provider_event_dynamic_vla_visitor) { |
8ceca0cd MD |
693 | struct app_dynamic_vla_visitor_ctx ctx = { |
694 | .ptr = testarray_dynamic_vla, | |
695 | .length = SIDE_ARRAY_SIZE(testarray_dynamic_vla), | |
696 | }; | |
d5cdb129 | 697 | side_event_call(my_provider_event_dynamic_vla_visitor, |
8ceca0cd MD |
698 | side_arg_list( |
699 | side_arg_dynamic( | |
808bd9bf | 700 | side_arg_dynamic_vla_visitor(test_dynamic_vla_visitor, &ctx, side_attr_list()) |
8ceca0cd MD |
701 | ) |
702 | ) | |
703 | ); | |
704 | } | |
705 | } | |
706 | ||
89747802 | 707 | side_static_event(my_provider_event_dynamic_struct_visitor, |
2b359235 MD |
708 | "myprovider", "mydynamicstructvisitor", SIDE_LOGLEVEL_DEBUG, |
709 | side_field_list( | |
485b800a | 710 | side_field_dynamic("dynamic", side_attr_list()), |
399c836b MD |
711 | ), |
712 | side_attr_list() | |
2b359235 MD |
713 | ); |
714 | ||
715 | struct struct_visitor_pair { | |
716 | const char *name; | |
717 | uint32_t value; | |
718 | }; | |
719 | ||
720 | struct app_dynamic_struct_visitor_ctx { | |
721 | const struct struct_visitor_pair *ptr; | |
722 | uint32_t length; | |
723 | }; | |
724 | ||
725 | static | |
726 | enum side_visitor_status test_dynamic_struct_visitor(const struct side_tracer_dynamic_struct_visitor_ctx *tracer_ctx, void *_ctx) | |
727 | { | |
728 | struct app_dynamic_struct_visitor_ctx *ctx = (struct app_dynamic_struct_visitor_ctx *) _ctx; | |
729 | uint32_t length = ctx->length, i; | |
730 | ||
731 | for (i = 0; i < length; i++) { | |
732 | struct side_arg_dynamic_event_field dynamic_field = { | |
733 | .field_name = ctx->ptr[i].name, | |
734 | .elem = { | |
735 | .dynamic_type = SIDE_DYNAMIC_TYPE_U32, | |
736 | .u = { | |
8d20e708 MD |
737 | .side_basic = { |
738 | .nr_attr = 0, | |
739 | .attr = NULL, | |
740 | .u = { | |
741 | .side_u32 = ctx->ptr[i].value, | |
742 | }, | |
743 | }, | |
2b359235 MD |
744 | }, |
745 | }, | |
746 | }; | |
747 | if (tracer_ctx->write_field(tracer_ctx, &dynamic_field) != SIDE_VISITOR_STATUS_OK) | |
748 | return SIDE_VISITOR_STATUS_ERROR; | |
749 | } | |
750 | return SIDE_VISITOR_STATUS_OK; | |
751 | } | |
752 | ||
753 | static struct struct_visitor_pair testarray_dynamic_struct[] = { | |
754 | { "a", 1, }, | |
755 | { "b", 2, }, | |
756 | { "c", 3, }, | |
757 | { "d", 4, }, | |
758 | }; | |
759 | ||
760 | static | |
761 | void test_dynamic_struct_with_visitor(void) | |
762 | { | |
89747802 | 763 | side_event_enable__my_provider_event_dynamic_struct_visitor = 1; |
d5cdb129 | 764 | side_event_cond(my_provider_event_dynamic_struct_visitor) { |
2b359235 MD |
765 | struct app_dynamic_struct_visitor_ctx ctx = { |
766 | .ptr = testarray_dynamic_struct, | |
767 | .length = SIDE_ARRAY_SIZE(testarray_dynamic_struct), | |
768 | }; | |
d5cdb129 | 769 | side_event_call(my_provider_event_dynamic_struct_visitor, |
2b359235 MD |
770 | side_arg_list( |
771 | side_arg_dynamic( | |
808bd9bf | 772 | side_arg_dynamic_struct_visitor(test_dynamic_struct_visitor, &ctx, side_attr_list()) |
2b359235 MD |
773 | ) |
774 | ) | |
775 | ); | |
776 | } | |
777 | } | |
778 | ||
89747802 | 779 | side_static_event(my_provider_event_user_attribute, "myprovider", "myevent_user_attribute", SIDE_LOGLEVEL_DEBUG, |
65010f43 | 780 | side_field_list( |
485b800a MD |
781 | side_field_u32("abc", side_attr_list()), |
782 | side_field_s64("def", side_attr_list()), | |
399c836b MD |
783 | ), |
784 | side_attr_list( | |
bc3c89b3 MD |
785 | side_attr("user_attribute_a", side_attr_string("val1")), |
786 | side_attr("user_attribute_b", side_attr_string("val2")), | |
65010f43 MD |
787 | ) |
788 | ); | |
789 | ||
790 | static | |
791 | void test_event_user_attribute(void) | |
792 | { | |
89747802 | 793 | side_event_enable__my_provider_event_user_attribute = 1; |
d5cdb129 | 794 | side_event(my_provider_event_user_attribute, side_arg_list(side_arg_u32(1), side_arg_s64(2))); |
65010f43 MD |
795 | } |
796 | ||
89747802 | 797 | side_static_event(my_provider_field_user_attribute, "myprovider", "myevent_field_attribute", SIDE_LOGLEVEL_DEBUG, |
a848763d | 798 | side_field_list( |
485b800a | 799 | side_field_u32("abc", |
a848763d | 800 | side_attr_list( |
bc3c89b3 MD |
801 | side_attr("user_attribute_a", side_attr_string("val1")), |
802 | side_attr("user_attribute_b", side_attr_u32(2)), | |
a848763d MD |
803 | ) |
804 | ), | |
485b800a | 805 | side_field_s64("def", |
a848763d | 806 | side_attr_list( |
bc3c89b3 MD |
807 | side_attr("user_attribute_c", side_attr_string("val3")), |
808 | side_attr("user_attribute_d", side_attr_s64(-5)), | |
a848763d MD |
809 | ) |
810 | ), | |
811 | ), | |
812 | side_attr_list() | |
813 | ); | |
814 | ||
815 | static | |
816 | void test_field_user_attribute(void) | |
817 | { | |
89747802 | 818 | side_event_enable__my_provider_field_user_attribute = 1; |
d5cdb129 | 819 | side_event(my_provider_field_user_attribute, side_arg_list(side_arg_u32(1), side_arg_s64(2))); |
a848763d MD |
820 | } |
821 | ||
89747802 | 822 | side_static_event_variadic(my_provider_event_variadic_attr, |
808bd9bf MD |
823 | "myprovider", "myvariadiceventattr", SIDE_LOGLEVEL_DEBUG, |
824 | side_field_list(), | |
825 | side_attr_list() | |
826 | ); | |
827 | ||
828 | static | |
829 | void test_variadic_attr(void) | |
830 | { | |
89747802 | 831 | side_event_enable__my_provider_event_variadic_attr = 1; |
d5cdb129 | 832 | side_event_variadic(my_provider_event_variadic_attr, |
808bd9bf MD |
833 | side_arg_list(), |
834 | side_arg_list( | |
835 | side_arg_dynamic_field("a", | |
836 | side_arg_dynamic_u32(55, | |
837 | side_attr_list( | |
bc3c89b3 MD |
838 | side_attr("user_attribute_c", side_attr_string("valX")), |
839 | side_attr("user_attribute_d", side_attr_u8(55)), | |
808bd9bf MD |
840 | ) |
841 | ) | |
842 | ), | |
843 | side_arg_dynamic_field("b", | |
844 | side_arg_dynamic_s8(-4, | |
845 | side_attr_list( | |
bc3c89b3 MD |
846 | side_attr("X", side_attr_u8(1)), |
847 | side_attr("Y", side_attr_s8(2)), | |
808bd9bf MD |
848 | ) |
849 | ) | |
850 | ), | |
8d20e708 MD |
851 | ), |
852 | side_attr_list() | |
808bd9bf MD |
853 | ); |
854 | } | |
855 | ||
89747802 | 856 | side_static_event_variadic(my_provider_event_variadic_vla_attr, |
808bd9bf MD |
857 | "myprovider", "myvariadiceventvlaattr", SIDE_LOGLEVEL_DEBUG, |
858 | side_field_list(), | |
859 | side_attr_list() | |
860 | ); | |
861 | ||
862 | static | |
863 | void test_variadic_vla_attr(void) | |
864 | { | |
865 | side_arg_dynamic_define_vec(myvla, | |
866 | side_arg_list( | |
867 | side_arg_dynamic_u32(1, | |
868 | side_attr_list( | |
bc3c89b3 MD |
869 | side_attr("Z", side_attr_u8(0)), |
870 | side_attr("A", side_attr_u8(123)), | |
808bd9bf MD |
871 | ) |
872 | ), | |
873 | side_arg_dynamic_u32(2, side_attr_list()), | |
874 | side_arg_dynamic_u32(3, side_attr_list()), | |
8d20e708 MD |
875 | ), |
876 | side_attr_list( | |
877 | side_attr("X", side_attr_u8(1)), | |
878 | side_attr("Y", side_attr_u8(2)), | |
808bd9bf MD |
879 | ) |
880 | ); | |
89747802 | 881 | side_event_enable__my_provider_event_variadic_vla_attr = 1; |
d5cdb129 | 882 | side_event_variadic(my_provider_event_variadic_vla_attr, |
808bd9bf MD |
883 | side_arg_list(), |
884 | side_arg_list( | |
8d20e708 MD |
885 | side_arg_dynamic_field("a", side_arg_dynamic_vla(&myvla)), |
886 | ), | |
887 | side_attr_list() | |
808bd9bf MD |
888 | ); |
889 | } | |
890 | ||
89747802 | 891 | side_static_event_variadic(my_provider_event_variadic_struct_attr, |
808bd9bf MD |
892 | "myprovider", "myvariadiceventstructattr", SIDE_LOGLEVEL_DEBUG, |
893 | side_field_list(), | |
894 | side_attr_list() | |
895 | ); | |
896 | ||
897 | static | |
898 | void test_variadic_struct_attr(void) | |
899 | { | |
89747802 | 900 | side_event_enable__my_provider_event_variadic_struct_attr = 1; |
d5cdb129 | 901 | side_event_cond(my_provider_event_variadic_struct_attr) { |
808bd9bf MD |
902 | side_arg_dynamic_define_struct(mystruct, |
903 | side_arg_list( | |
904 | side_arg_dynamic_field("a", | |
905 | side_arg_dynamic_u32(43, | |
906 | side_attr_list( | |
bc3c89b3 | 907 | side_attr("A", side_attr_bool(true)), |
808bd9bf MD |
908 | ) |
909 | ) | |
910 | ), | |
911 | side_arg_dynamic_field("b", side_arg_dynamic_u8(55, side_attr_list())), | |
8d20e708 MD |
912 | ), |
913 | side_attr_list( | |
914 | side_attr("X", side_attr_u8(1)), | |
915 | side_attr("Y", side_attr_u8(2)), | |
808bd9bf MD |
916 | ) |
917 | ); | |
d5cdb129 | 918 | side_event_call_variadic(my_provider_event_variadic_struct_attr, |
808bd9bf MD |
919 | side_arg_list(), |
920 | side_arg_list( | |
8d20e708 MD |
921 | side_arg_dynamic_field("a", side_arg_dynamic_struct(&mystruct)), |
922 | ), | |
923 | side_attr_list() | |
808bd9bf MD |
924 | ); |
925 | } | |
926 | } | |
927 | ||
89747802 | 928 | side_static_event(my_provider_event_float, "myprovider", "myeventfloat", SIDE_LOGLEVEL_DEBUG, |
fb25b355 MD |
929 | side_field_list( |
930 | #if __HAVE_FLOAT16 | |
485b800a | 931 | side_field_float_binary16("binary16", side_attr_list()), |
fb25b355 MD |
932 | #endif |
933 | #if __HAVE_FLOAT32 | |
485b800a | 934 | side_field_float_binary32("binary32", side_attr_list()), |
fb25b355 MD |
935 | #endif |
936 | #if __HAVE_FLOAT64 | |
485b800a | 937 | side_field_float_binary64("binary64", side_attr_list()), |
fb25b355 MD |
938 | #endif |
939 | #if __HAVE_FLOAT128 | |
485b800a | 940 | side_field_float_binary128("binary128", side_attr_list()), |
fb25b355 MD |
941 | #endif |
942 | ), | |
943 | side_attr_list() | |
944 | ); | |
945 | ||
946 | static | |
947 | void test_float(void) | |
948 | { | |
89747802 | 949 | side_event_enable__my_provider_event_float = 1; |
d5cdb129 | 950 | side_event(my_provider_event_float, |
fb25b355 MD |
951 | side_arg_list( |
952 | #if __HAVE_FLOAT16 | |
953 | side_arg_float_binary16(1.1), | |
954 | #endif | |
955 | #if __HAVE_FLOAT32 | |
956 | side_arg_float_binary32(2.2), | |
957 | #endif | |
958 | #if __HAVE_FLOAT64 | |
959 | side_arg_float_binary64(3.3), | |
960 | #endif | |
961 | #if __HAVE_FLOAT128 | |
962 | side_arg_float_binary128(4.4), | |
963 | #endif | |
964 | ) | |
965 | ); | |
966 | } | |
967 | ||
89747802 | 968 | side_static_event_variadic(my_provider_event_variadic_float, |
fb25b355 MD |
969 | "myprovider", "myvariadicfloat", SIDE_LOGLEVEL_DEBUG, |
970 | side_field_list(), | |
971 | side_attr_list() | |
972 | ); | |
973 | ||
974 | static | |
975 | void test_variadic_float(void) | |
976 | { | |
89747802 | 977 | side_event_enable__my_provider_event_variadic_float = 1; |
d5cdb129 | 978 | side_event_variadic(my_provider_event_variadic_float, |
fb25b355 MD |
979 | side_arg_list(), |
980 | side_arg_list( | |
981 | #if __HAVE_FLOAT16 | |
982 | side_arg_dynamic_field("binary16", | |
983 | side_arg_dynamic_float_binary16(1.1, side_attr_list()) | |
984 | ), | |
985 | #endif | |
986 | #if __HAVE_FLOAT32 | |
987 | side_arg_dynamic_field("binary32", | |
988 | side_arg_dynamic_float_binary32(2.2, side_attr_list()) | |
989 | ), | |
990 | #endif | |
991 | #if __HAVE_FLOAT64 | |
992 | side_arg_dynamic_field("binary64", | |
993 | side_arg_dynamic_float_binary64(3.3, side_attr_list()) | |
994 | ), | |
995 | #endif | |
996 | #if __HAVE_FLOAT128 | |
997 | side_arg_dynamic_field("binary128", | |
998 | side_arg_dynamic_float_binary128(4.4, side_attr_list()) | |
999 | ), | |
1000 | #endif | |
8d20e708 MD |
1001 | ), |
1002 | side_attr_list() | |
fb25b355 MD |
1003 | ); |
1004 | } | |
1005 | ||
79f677ba | 1006 | static side_define_enum(myenum, |
66cff328 | 1007 | side_enum_mapping_list( |
79f677ba MD |
1008 | side_enum_mapping_range("one-ten", 1, 10), |
1009 | side_enum_mapping_range("100-200", 100, 200), | |
1010 | side_enum_mapping_value("200", 200), | |
1011 | side_enum_mapping_value("300", 300), | |
d4328528 MD |
1012 | ), |
1013 | side_attr_list() | |
79f677ba MD |
1014 | ); |
1015 | ||
89747802 | 1016 | side_static_event(my_provider_event_enum, "myprovider", "myeventenum", SIDE_LOGLEVEL_DEBUG, |
79f677ba | 1017 | side_field_list( |
f89c4ad1 MD |
1018 | side_field_enum("5", &myenum, side_elem(side_type_u32(side_attr_list()))), |
1019 | side_field_enum("400", &myenum, side_elem(side_type_u64(side_attr_list()))), | |
1020 | side_field_enum("200", &myenum, side_elem(side_type_u8(side_attr_list()))), | |
1021 | side_field_enum("-100", &myenum, side_elem(side_type_s8(side_attr_list()))), | |
79f677ba MD |
1022 | ), |
1023 | side_attr_list() | |
1024 | ); | |
1025 | ||
1026 | static | |
1027 | void test_enum(void) | |
1028 | { | |
89747802 | 1029 | side_event_enable__my_provider_event_enum = 1; |
d5cdb129 | 1030 | side_event(my_provider_event_enum, |
79f677ba | 1031 | side_arg_list( |
d8be25de MD |
1032 | side_arg_u32(5), |
1033 | side_arg_u64(400), | |
1034 | side_arg_u8(200), | |
1035 | side_arg_s8(-100), | |
79f677ba MD |
1036 | ) |
1037 | ); | |
1038 | } | |
1039 | ||
ea32e5fc | 1040 | /* A bitmap enum maps bits to labels. */ |
66cff328 MD |
1041 | static side_define_enum_bitmap(myenum_bitmap, |
1042 | side_enum_bitmap_mapping_list( | |
1043 | side_enum_bitmap_mapping_value("0", 0), | |
1044 | side_enum_bitmap_mapping_range("1-2", 1, 2), | |
1045 | side_enum_bitmap_mapping_range("2-4", 2, 4), | |
1046 | side_enum_bitmap_mapping_value("3", 3), | |
1047 | side_enum_bitmap_mapping_value("30", 30), | |
1048 | side_enum_bitmap_mapping_value("63", 63), | |
af6aa6e1 MD |
1049 | side_enum_bitmap_mapping_range("158-160", 158, 160), |
1050 | side_enum_bitmap_mapping_value("159", 159), | |
1051 | side_enum_bitmap_mapping_range("500-700", 500, 700), | |
d4328528 MD |
1052 | ), |
1053 | side_attr_list() | |
ea32e5fc MD |
1054 | ); |
1055 | ||
89747802 | 1056 | side_static_event(my_provider_event_enum_bitmap, "myprovider", "myeventenumbitmap", SIDE_LOGLEVEL_DEBUG, |
ea32e5fc | 1057 | side_field_list( |
f89c4ad1 MD |
1058 | side_field_enum_bitmap("bit_0", &myenum_bitmap, side_elem(side_type_u32(side_attr_list()))), |
1059 | side_field_enum_bitmap("bit_1", &myenum_bitmap, side_elem(side_type_u32(side_attr_list()))), | |
1060 | side_field_enum_bitmap("bit_2", &myenum_bitmap, side_elem(side_type_u8(side_attr_list()))), | |
1061 | side_field_enum_bitmap("bit_3", &myenum_bitmap, side_elem(side_type_u8(side_attr_list()))), | |
1062 | side_field_enum_bitmap("bit_30", &myenum_bitmap, side_elem(side_type_u32(side_attr_list()))), | |
1063 | side_field_enum_bitmap("bit_31", &myenum_bitmap, side_elem(side_type_u32(side_attr_list()))), | |
1064 | side_field_enum_bitmap("bit_63", &myenum_bitmap, side_elem(side_type_u64(side_attr_list()))), | |
1065 | side_field_enum_bitmap("bits_1+63", &myenum_bitmap, side_elem(side_type_u64(side_attr_list()))), | |
4cc2880b | 1066 | side_field_enum_bitmap("byte_bit_2", &myenum_bitmap, side_elem(side_type_byte(side_attr_list()))), |
f89c4ad1 MD |
1067 | side_field_enum_bitmap("bit_159", &myenum_bitmap, |
1068 | side_elem(side_type_array(side_elem(side_type_u32(side_attr_list())), 5, side_attr_list()))), | |
1069 | side_field_enum_bitmap("bit_159", &myenum_bitmap, | |
1070 | side_elem(side_type_vla(side_elem(side_type_u32(side_attr_list())), side_attr_list()))), | |
ea32e5fc MD |
1071 | ), |
1072 | side_attr_list() | |
1073 | ); | |
1074 | ||
1075 | static | |
1076 | void test_enum_bitmap(void) | |
1077 | { | |
89747802 | 1078 | side_event_enable__my_provider_event_enum_bitmap = 1; |
af6aa6e1 MD |
1079 | side_event_cond(my_provider_event_enum_bitmap) { |
1080 | side_arg_define_vec(myarray, | |
1081 | side_arg_list( | |
1082 | side_arg_u32(0), | |
1083 | side_arg_u32(0), | |
1084 | side_arg_u32(0), | |
1085 | side_arg_u32(0), | |
1086 | side_arg_u32(0x80000000), /* bit 159 */ | |
1087 | ) | |
1088 | ); | |
1089 | side_event_call(my_provider_event_enum_bitmap, | |
1090 | side_arg_list( | |
bab5d6e4 MD |
1091 | side_arg_u32(1 << 0), |
1092 | side_arg_u32(1 << 1), | |
1093 | side_arg_u8(1 << 2), | |
1094 | side_arg_u8(1 << 3), | |
1095 | side_arg_u32(1 << 30), | |
1096 | side_arg_u32(1 << 31), | |
1097 | side_arg_u64(1ULL << 63), | |
1098 | side_arg_u64((1ULL << 1) | (1ULL << 63)), | |
4cc2880b | 1099 | side_arg_byte(1 << 2), |
bab5d6e4 MD |
1100 | side_arg_array(&myarray), |
1101 | side_arg_vla(&myarray), | |
af6aa6e1 MD |
1102 | ) |
1103 | ); | |
1104 | } | |
ea32e5fc MD |
1105 | } |
1106 | ||
7aec0d09 MD |
1107 | static uint8_t blob_fixint[] = { 0x55, 0x44, 0x33, 0x22, 0x11 }; |
1108 | ||
89747802 | 1109 | side_static_event_variadic(my_provider_event_blob, "myprovider", "myeventblob", SIDE_LOGLEVEL_DEBUG, |
7aec0d09 | 1110 | side_field_list( |
f7653b43 MD |
1111 | side_field_byte("blobfield", side_attr_list()), |
1112 | side_field_array("arrayblob", side_elem(side_type_byte(side_attr_list())), 3, side_attr_list()), | |
1113 | side_field_array("arrayblobfix", side_elem(side_type_byte(side_attr_list())), SIDE_ARRAY_SIZE(blob_fixint), side_attr_list()), | |
1114 | side_field_vla("vlablobfix", side_elem(side_type_byte(side_attr_list())), side_attr_list()), | |
7aec0d09 MD |
1115 | ), |
1116 | side_attr_list() | |
1117 | ); | |
1118 | ||
1119 | static | |
1120 | void test_blob(void) | |
1121 | { | |
89747802 | 1122 | side_event_enable__my_provider_event_blob = 1; |
d5cdb129 | 1123 | side_event_cond(my_provider_event_blob) { |
f7653b43 | 1124 | side_arg_define_vec(myarray, side_arg_list(side_arg_byte(1), side_arg_byte(2), side_arg_byte(3))); |
199e7aa9 MD |
1125 | side_arg_dynamic_define_vec(myvla, |
1126 | side_arg_list( | |
f7653b43 MD |
1127 | side_arg_dynamic_byte(0x22, side_attr_list()), |
1128 | side_arg_dynamic_byte(0x33, side_attr_list()), | |
8d20e708 MD |
1129 | ), |
1130 | side_attr_list() | |
199e7aa9 | 1131 | ); |
d5cdb129 | 1132 | side_event_call_variadic(my_provider_event_blob, |
7aec0d09 | 1133 | side_arg_list( |
f7653b43 | 1134 | side_arg_byte(0x55), |
7aec0d09 | 1135 | side_arg_array(&myarray), |
f7653b43 MD |
1136 | side_arg_array_byte(blob_fixint), |
1137 | side_arg_vla_byte(blob_fixint, SIDE_ARRAY_SIZE(blob_fixint)), | |
199e7aa9 MD |
1138 | ), |
1139 | side_arg_list( | |
1140 | side_arg_dynamic_field("varblobfield", | |
f7653b43 | 1141 | side_arg_dynamic_byte(0x55, side_attr_list()) |
199e7aa9 | 1142 | ), |
8d20e708 MD |
1143 | side_arg_dynamic_field("varblobvla", side_arg_dynamic_vla(&myvla)), |
1144 | ), | |
1145 | side_attr_list() | |
7aec0d09 MD |
1146 | ); |
1147 | } | |
1148 | } | |
ea32e5fc | 1149 | |
89747802 | 1150 | side_static_event_variadic(my_provider_event_format_string, |
71aa8975 MD |
1151 | "myprovider", "myeventformatstring", SIDE_LOGLEVEL_DEBUG, |
1152 | side_field_list( | |
1153 | side_field_string("fmt", side_attr_list()), | |
1154 | ), | |
1155 | side_attr_list( | |
1156 | side_attr("lang.c.format_string", side_attr_bool(true)), | |
1157 | ) | |
1158 | ); | |
1159 | ||
1160 | static | |
1161 | void test_fmt_string(void) | |
1162 | { | |
89747802 | 1163 | side_event_enable__my_provider_event_format_string = 1; |
71aa8975 MD |
1164 | side_event_cond(my_provider_event_format_string) { |
1165 | side_arg_dynamic_define_vec(args, | |
1166 | side_arg_list( | |
1167 | side_arg_dynamic_string("blah", side_attr_list()), | |
1168 | side_arg_dynamic_s32(123, side_attr_list()), | |
1169 | ), | |
1170 | side_attr_list() | |
1171 | ); | |
1172 | side_event_call_variadic(my_provider_event_format_string, | |
1173 | side_arg_list( | |
1174 | side_arg_string("This is a formatted string with str: %s int: %d"), | |
1175 | ), | |
1176 | side_arg_list( | |
1177 | side_arg_dynamic_field("arguments", side_arg_dynamic_vla(&args)), | |
1178 | ), | |
1179 | side_attr_list() | |
1180 | ); | |
1181 | } | |
1182 | } | |
1183 | ||
f611d0c3 MD |
1184 | int main() |
1185 | { | |
1186 | test_fields(); | |
89747802 MD |
1187 | test_event_hidden(); |
1188 | test_event_export(); | |
c7a14585 | 1189 | test_struct_literal(); |
f611d0c3 MD |
1190 | test_struct(); |
1191 | test_array(); | |
1192 | test_vla(); | |
1193 | test_vla_visitor(); | |
cdd6e858 | 1194 | test_vla_visitor_2d(); |
ba845af5 | 1195 | test_array_fixint(); |
1533629f | 1196 | test_vla_fixint(); |
a2e2357e MD |
1197 | test_dynamic_basic_type(); |
1198 | test_dynamic_vla(); | |
465e5e7e | 1199 | test_dynamic_null(); |
c208889e MD |
1200 | test_dynamic_struct(); |
1201 | test_dynamic_nested_struct(); | |
1202 | test_dynamic_vla_struct(); | |
1203 | test_dynamic_struct_vla(); | |
948e3e72 | 1204 | test_dynamic_nested_vla(); |
19fa6aa2 | 1205 | test_variadic(); |
41c4d119 | 1206 | test_static_variadic(); |
4f40d951 MD |
1207 | test_bool(); |
1208 | test_dynamic_bool(); | |
8ceca0cd | 1209 | test_dynamic_vla_with_visitor(); |
2b359235 | 1210 | test_dynamic_struct_with_visitor(); |
65010f43 | 1211 | test_event_user_attribute(); |
a848763d | 1212 | test_field_user_attribute(); |
808bd9bf MD |
1213 | test_variadic_attr(); |
1214 | test_variadic_vla_attr(); | |
1215 | test_variadic_struct_attr(); | |
fb25b355 MD |
1216 | test_float(); |
1217 | test_variadic_float(); | |
79f677ba | 1218 | test_enum(); |
ea32e5fc | 1219 | test_enum_bitmap(); |
7aec0d09 | 1220 | test_blob(); |
71aa8975 | 1221 | test_fmt_string(); |
f611d0c3 MD |
1222 | return 0; |
1223 | } |