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> |
7a1cb105 | 11 | #include <stddef.h> |
f611d0c3 | 12 | |
67337c4a | 13 | #include <side/trace.h> |
f611d0c3 MD |
14 | |
15 | /* User code example */ | |
16 | ||
67337c4a MD |
17 | side_static_event(my_provider_event, "myprovider", "myevent", SIDE_LOGLEVEL_DEBUG, |
18 | side_field_list( | |
a82ffcff MD |
19 | side_field_u32("abc"), |
20 | side_field_s64("def"), | |
21 | side_field_pointer("ptr"), | |
67337c4a MD |
22 | side_field_dynamic("dynamic"), |
23 | side_field_dynamic("dynamic_pointer"), | |
a82ffcff MD |
24 | side_field_null("null"), |
25 | ) | |
f611d0c3 MD |
26 | ); |
27 | ||
28 | static | |
29 | void test_fields(void) | |
30 | { | |
31 | uint32_t uw = 42; | |
32 | int64_t sdw = -500; | |
33 | ||
67337c4a MD |
34 | side_event(my_provider_event, |
35 | side_arg_list( | |
36 | side_arg_u32(uw), | |
37 | side_arg_s64(sdw), | |
38 | side_arg_pointer((void *) 0x1), | |
a82ffcff MD |
39 | side_arg_dynamic_string("zzz"), |
40 | side_arg_dynamic_pointer((void *) 0x1), | |
67337c4a | 41 | side_arg_null(), |
f5e650d7 MD |
42 | ) |
43 | ); | |
f611d0c3 MD |
44 | } |
45 | ||
67337c4a MD |
46 | side_hidden_event(my_provider_event_hidden, "myprovider", "myeventhidden", SIDE_LOGLEVEL_DEBUG, |
47 | side_field_list( | |
a82ffcff MD |
48 | side_field_u32("abc"), |
49 | ) | |
89747802 MD |
50 | ); |
51 | ||
52 | static | |
53 | void test_event_hidden(void) | |
54 | { | |
67337c4a | 55 | side_event(my_provider_event_hidden, side_arg_list(side_arg_u32(2))); |
89747802 MD |
56 | } |
57 | ||
67337c4a | 58 | side_declare_event(my_provider_event_export); |
89747802 | 59 | |
67337c4a MD |
60 | side_export_event(my_provider_event_export, "myprovider", "myeventexport", SIDE_LOGLEVEL_DEBUG, |
61 | side_field_list( | |
a82ffcff MD |
62 | side_field_u32("abc"), |
63 | ) | |
89747802 MD |
64 | ); |
65 | ||
66 | static | |
67 | void test_event_export(void) | |
68 | { | |
67337c4a | 69 | side_event(my_provider_event_export, side_arg_list(side_arg_u32(2))); |
89747802 MD |
70 | } |
71 | ||
67337c4a MD |
72 | side_static_event(my_provider_event_struct_literal, "myprovider", "myeventstructliteral", SIDE_LOGLEVEL_DEBUG, |
73 | side_field_list( | |
74 | side_field_struct("structliteral", | |
75 | side_struct_literal( | |
76 | side_field_list( | |
a82ffcff MD |
77 | side_field_u32("x"), |
78 | side_field_s64("y"), | |
79 | ) | |
c7a14585 | 80 | ) |
f611d0c3 | 81 | ), |
a82ffcff MD |
82 | side_field_u8("z"), |
83 | ) | |
f611d0c3 MD |
84 | ); |
85 | ||
c7a14585 MD |
86 | static |
87 | void test_struct_literal(void) | |
88 | { | |
67337c4a MD |
89 | side_event_cond(my_provider_event_struct_literal) { |
90 | side_arg_define_vec(mystruct, side_arg_list(side_arg_u32(21), side_arg_s64(22))); | |
91 | side_event_call(my_provider_event_struct_literal, side_arg_list(side_arg_struct(&mystruct), side_arg_u8(55))); | |
c7a14585 MD |
92 | } |
93 | } | |
94 | ||
67337c4a MD |
95 | static side_define_struct(mystructdef, |
96 | side_field_list( | |
a82ffcff MD |
97 | side_field_u32("x"), |
98 | side_field_s64("y"), | |
99 | ) | |
c7a14585 MD |
100 | ); |
101 | ||
67337c4a MD |
102 | side_static_event(my_provider_event_struct, "myprovider", "myeventstruct", SIDE_LOGLEVEL_DEBUG, |
103 | side_field_list( | |
104 | side_field_struct("struct", &mystructdef), | |
a82ffcff MD |
105 | side_field_u8("z"), |
106 | ) | |
c7a14585 MD |
107 | ); |
108 | ||
f611d0c3 MD |
109 | static |
110 | void test_struct(void) | |
111 | { | |
67337c4a MD |
112 | side_event_cond(my_provider_event_struct) { |
113 | side_arg_define_vec(mystruct, side_arg_list(side_arg_u32(21), side_arg_s64(22))); | |
114 | side_event_call(my_provider_event_struct, side_arg_list(side_arg_struct(&mystruct), side_arg_u8(55))); | |
f611d0c3 MD |
115 | } |
116 | } | |
117 | ||
67337c4a MD |
118 | side_static_event(my_provider_event_array, "myprovider", "myarray", SIDE_LOGLEVEL_DEBUG, |
119 | side_field_list( | |
a82ffcff MD |
120 | side_field_array("arr", side_elem(side_type_u32()), 3), |
121 | side_field_s64("v"), | |
122 | ) | |
f611d0c3 MD |
123 | ); |
124 | ||
125 | static | |
126 | void test_array(void) | |
127 | { | |
67337c4a MD |
128 | side_event_cond(my_provider_event_array) { |
129 | side_arg_define_vec(myarray, side_arg_list(side_arg_u32(1), side_arg_u32(2), side_arg_u32(3))); | |
130 | side_event_call(my_provider_event_array, side_arg_list(side_arg_array(&myarray), side_arg_s64(42))); | |
f611d0c3 MD |
131 | } |
132 | } | |
133 | ||
67337c4a MD |
134 | side_static_event(my_provider_event_vla, "myprovider", "myvla", SIDE_LOGLEVEL_DEBUG, |
135 | side_field_list( | |
a82ffcff MD |
136 | side_field_vla("vla", side_elem(side_type_u32())), |
137 | side_field_s64("v"), | |
138 | ) | |
f611d0c3 MD |
139 | ); |
140 | ||
141 | static | |
142 | void test_vla(void) | |
143 | { | |
67337c4a MD |
144 | side_event_cond(my_provider_event_vla) { |
145 | side_arg_define_vec(myvla, side_arg_list(side_arg_u32(1), side_arg_u32(2), side_arg_u32(3))); | |
146 | side_event_call(my_provider_event_vla, side_arg_list(side_arg_vla(&myvla), side_arg_s64(42))); | |
f611d0c3 MD |
147 | } |
148 | } | |
149 | ||
cdd6e858 MD |
150 | /* 1D array visitor */ |
151 | ||
f611d0c3 MD |
152 | struct app_visitor_ctx { |
153 | const uint32_t *ptr; | |
352a4b77 | 154 | uint32_t length; |
f611d0c3 MD |
155 | }; |
156 | ||
352a4b77 | 157 | static |
67337c4a | 158 | enum side_visitor_status test_visitor(const struct side_tracer_visitor_ctx *tracer_ctx, void *_ctx) |
f611d0c3 MD |
159 | { |
160 | struct app_visitor_ctx *ctx = (struct app_visitor_ctx *) _ctx; | |
352a4b77 MD |
161 | uint32_t length = ctx->length, i; |
162 | ||
163 | for (i = 0; i < length; i++) { | |
67337c4a | 164 | const struct side_arg elem = side_arg_u32(ctx->ptr[i]); |
ffb5c809 | 165 | |
67337c4a MD |
166 | if (tracer_ctx->write_elem(tracer_ctx, &elem) != SIDE_VISITOR_STATUS_OK) |
167 | return SIDE_VISITOR_STATUS_ERROR; | |
352a4b77 | 168 | } |
67337c4a | 169 | return SIDE_VISITOR_STATUS_OK; |
f611d0c3 MD |
170 | } |
171 | ||
172 | static uint32_t testarray[] = { 1, 2, 3, 4, 5, 6, 7, 8 }; | |
173 | ||
67337c4a MD |
174 | side_static_event(my_provider_event_vla_visitor, "myprovider", "myvlavisit", SIDE_LOGLEVEL_DEBUG, |
175 | side_field_list( | |
a82ffcff MD |
176 | side_field_vla_visitor("vlavisit", side_elem(side_type_u32()), test_visitor), |
177 | side_field_s64("v"), | |
178 | ) | |
f611d0c3 MD |
179 | ); |
180 | ||
181 | static | |
182 | void test_vla_visitor(void) | |
183 | { | |
67337c4a | 184 | side_event_cond(my_provider_event_vla_visitor) { |
f611d0c3 MD |
185 | struct app_visitor_ctx ctx = { |
186 | .ptr = testarray, | |
67337c4a | 187 | .length = SIDE_ARRAY_SIZE(testarray), |
f611d0c3 | 188 | }; |
67337c4a | 189 | side_event_call(my_provider_event_vla_visitor, side_arg_list(side_arg_vla_visitor(&ctx), side_arg_s64(42))); |
f611d0c3 MD |
190 | } |
191 | } | |
192 | ||
cdd6e858 MD |
193 | /* 2D array visitor */ |
194 | ||
195 | struct app_visitor_2d_inner_ctx { | |
196 | const uint32_t *ptr; | |
197 | uint32_t length; | |
198 | }; | |
199 | ||
200 | static | |
67337c4a | 201 | enum side_visitor_status test_inner_visitor(const struct side_tracer_visitor_ctx *tracer_ctx, void *_ctx) |
cdd6e858 MD |
202 | { |
203 | struct app_visitor_2d_inner_ctx *ctx = (struct app_visitor_2d_inner_ctx *) _ctx; | |
204 | uint32_t length = ctx->length, i; | |
205 | ||
206 | for (i = 0; i < length; i++) { | |
67337c4a | 207 | const struct side_arg elem = side_arg_u32(ctx->ptr[i]); |
ffb5c809 | 208 | |
67337c4a MD |
209 | if (tracer_ctx->write_elem(tracer_ctx, &elem) != SIDE_VISITOR_STATUS_OK) |
210 | return SIDE_VISITOR_STATUS_ERROR; | |
cdd6e858 | 211 | } |
67337c4a | 212 | return SIDE_VISITOR_STATUS_OK; |
cdd6e858 MD |
213 | } |
214 | ||
215 | struct app_visitor_2d_outer_ctx { | |
216 | const uint32_t (*ptr)[2]; | |
217 | uint32_t length; | |
218 | }; | |
219 | ||
220 | static | |
67337c4a | 221 | enum side_visitor_status test_outer_visitor(const struct side_tracer_visitor_ctx *tracer_ctx, void *_ctx) |
cdd6e858 MD |
222 | { |
223 | struct app_visitor_2d_outer_ctx *ctx = (struct app_visitor_2d_outer_ctx *) _ctx; | |
224 | uint32_t length = ctx->length, i; | |
225 | ||
226 | for (i = 0; i < length; i++) { | |
227 | struct app_visitor_2d_inner_ctx inner_ctx = { | |
228 | .ptr = ctx->ptr[i], | |
229 | .length = 2, | |
230 | }; | |
67337c4a MD |
231 | const struct side_arg elem = side_arg_vla_visitor(&inner_ctx); |
232 | if (tracer_ctx->write_elem(tracer_ctx, &elem) != SIDE_VISITOR_STATUS_OK) | |
233 | return SIDE_VISITOR_STATUS_ERROR; | |
cdd6e858 | 234 | } |
67337c4a | 235 | return SIDE_VISITOR_STATUS_OK; |
cdd6e858 MD |
236 | } |
237 | ||
238 | static uint32_t testarray2d[][2] = { | |
239 | { 1, 2 }, | |
240 | { 33, 44 }, | |
241 | { 55, 66 }, | |
242 | }; | |
243 | ||
67337c4a MD |
244 | side_static_event(my_provider_event_vla_visitor2d, "myprovider", "myvlavisit2d", SIDE_LOGLEVEL_DEBUG, |
245 | side_field_list( | |
246 | side_field_vla_visitor("vlavisit2d", | |
247 | side_elem( | |
248 | side_type_vla_visitor( | |
a82ffcff MD |
249 | side_elem(side_type_u32()), |
250 | test_inner_visitor | |
251 | ) | |
252 | ), test_outer_visitor), | |
253 | side_field_s64("v"), | |
254 | ) | |
cdd6e858 MD |
255 | ); |
256 | ||
257 | static | |
258 | void test_vla_visitor_2d(void) | |
259 | { | |
67337c4a | 260 | side_event_cond(my_provider_event_vla_visitor2d) { |
cdd6e858 MD |
261 | struct app_visitor_2d_outer_ctx ctx = { |
262 | .ptr = testarray2d, | |
67337c4a | 263 | .length = SIDE_ARRAY_SIZE(testarray2d), |
cdd6e858 | 264 | }; |
67337c4a | 265 | side_event_call(my_provider_event_vla_visitor2d, side_arg_list(side_arg_vla_visitor(&ctx), side_arg_s64(42))); |
cdd6e858 MD |
266 | } |
267 | } | |
268 | ||
67337c4a MD |
269 | side_static_event(my_provider_event_dynamic_basic, |
270 | "myprovider", "mydynamicbasic", SIDE_LOGLEVEL_DEBUG, | |
271 | side_field_list( | |
272 | side_field_dynamic("dynamic"), | |
a82ffcff | 273 | ) |
a2e2357e MD |
274 | ); |
275 | ||
276 | static | |
277 | void test_dynamic_basic_type(void) | |
278 | { | |
67337c4a | 279 | side_event(my_provider_event_dynamic_basic, |
a82ffcff | 280 | side_arg_list(side_arg_dynamic_s16(-33))); |
a2e2357e MD |
281 | } |
282 | ||
67337c4a MD |
283 | side_static_event(my_provider_event_dynamic_vla, |
284 | "myprovider", "mydynamicvla", SIDE_LOGLEVEL_DEBUG, | |
285 | side_field_list( | |
286 | side_field_dynamic("dynamic"), | |
a82ffcff | 287 | ) |
a2e2357e MD |
288 | ); |
289 | ||
290 | static | |
291 | void test_dynamic_vla(void) | |
292 | { | |
67337c4a MD |
293 | side_arg_dynamic_define_vec(myvla, |
294 | side_arg_list( | |
a82ffcff MD |
295 | side_arg_dynamic_u32(1), |
296 | side_arg_dynamic_u32(2), | |
297 | side_arg_dynamic_u32(3), | |
298 | ) | |
df075fa5 | 299 | ); |
67337c4a MD |
300 | side_event(my_provider_event_dynamic_vla, |
301 | side_arg_list(side_arg_dynamic_vla(&myvla))); | |
a2e2357e MD |
302 | } |
303 | ||
67337c4a MD |
304 | side_static_event(my_provider_event_dynamic_null, |
305 | "myprovider", "mydynamicnull", SIDE_LOGLEVEL_DEBUG, | |
306 | side_field_list( | |
307 | side_field_dynamic("dynamic"), | |
a82ffcff | 308 | ) |
465e5e7e MD |
309 | ); |
310 | ||
311 | static | |
312 | void test_dynamic_null(void) | |
313 | { | |
67337c4a | 314 | side_event(my_provider_event_dynamic_null, |
a82ffcff | 315 | side_arg_list(side_arg_dynamic_null())); |
465e5e7e MD |
316 | } |
317 | ||
67337c4a MD |
318 | side_static_event(my_provider_event_dynamic_struct, |
319 | "myprovider", "mydynamicstruct", SIDE_LOGLEVEL_DEBUG, | |
320 | side_field_list( | |
321 | side_field_dynamic("dynamic"), | |
a82ffcff | 322 | ) |
465e5e7e MD |
323 | ); |
324 | ||
325 | static | |
c208889e | 326 | void test_dynamic_struct(void) |
465e5e7e | 327 | { |
67337c4a MD |
328 | side_arg_dynamic_define_struct(mystruct, |
329 | side_arg_list( | |
a82ffcff MD |
330 | side_arg_dynamic_field("a", side_arg_dynamic_u32(43)), |
331 | side_arg_dynamic_field("b", side_arg_dynamic_string("zzz")), | |
332 | side_arg_dynamic_field("c", side_arg_dynamic_null()), | |
333 | ) | |
465e5e7e MD |
334 | ); |
335 | ||
67337c4a MD |
336 | side_event(my_provider_event_dynamic_struct, |
337 | side_arg_list(side_arg_dynamic_struct(&mystruct))); | |
465e5e7e MD |
338 | } |
339 | ||
67337c4a MD |
340 | side_static_event(my_provider_event_dynamic_nested_struct, |
341 | "myprovider", "mydynamicnestedstruct", SIDE_LOGLEVEL_DEBUG, | |
342 | side_field_list( | |
343 | side_field_dynamic("dynamic"), | |
a82ffcff | 344 | ) |
3222d397 MD |
345 | ); |
346 | ||
347 | static | |
c208889e | 348 | void test_dynamic_nested_struct(void) |
3222d397 | 349 | { |
67337c4a MD |
350 | side_arg_dynamic_define_struct(nested, |
351 | side_arg_list( | |
a82ffcff MD |
352 | side_arg_dynamic_field("a", side_arg_dynamic_u32(43)), |
353 | side_arg_dynamic_field("b", side_arg_dynamic_u8(55)), | |
354 | ) | |
3222d397 | 355 | ); |
67337c4a MD |
356 | side_arg_dynamic_define_struct(nested2, |
357 | side_arg_list( | |
a82ffcff MD |
358 | side_arg_dynamic_field("aa", side_arg_dynamic_u64(128)), |
359 | side_arg_dynamic_field("bb", side_arg_dynamic_u16(1)), | |
360 | ) | |
3222d397 | 361 | ); |
67337c4a MD |
362 | side_arg_dynamic_define_struct(mystruct, |
363 | side_arg_list( | |
364 | side_arg_dynamic_field("nested", side_arg_dynamic_struct(&nested)), | |
365 | side_arg_dynamic_field("nested2", side_arg_dynamic_struct(&nested2)), | |
a82ffcff | 366 | ) |
3222d397 | 367 | ); |
67337c4a MD |
368 | side_event(my_provider_event_dynamic_nested_struct, |
369 | side_arg_list(side_arg_dynamic_struct(&mystruct))); | |
3222d397 MD |
370 | } |
371 | ||
67337c4a MD |
372 | side_static_event(my_provider_event_dynamic_vla_struct, |
373 | "myprovider", "mydynamicvlastruct", SIDE_LOGLEVEL_DEBUG, | |
374 | side_field_list( | |
375 | side_field_dynamic("dynamic"), | |
a82ffcff | 376 | ) |
7ce1b78f MD |
377 | ); |
378 | ||
379 | static | |
c208889e | 380 | void test_dynamic_vla_struct(void) |
7ce1b78f | 381 | { |
67337c4a MD |
382 | side_arg_dynamic_define_struct(nested, |
383 | side_arg_list( | |
a82ffcff MD |
384 | side_arg_dynamic_field("a", side_arg_dynamic_u32(43)), |
385 | side_arg_dynamic_field("b", side_arg_dynamic_u8(55)), | |
386 | ) | |
7ce1b78f | 387 | ); |
67337c4a MD |
388 | side_arg_dynamic_define_vec(myvla, |
389 | side_arg_list( | |
390 | side_arg_dynamic_struct(&nested), | |
391 | side_arg_dynamic_struct(&nested), | |
392 | side_arg_dynamic_struct(&nested), | |
393 | side_arg_dynamic_struct(&nested), | |
a82ffcff | 394 | ) |
7ce1b78f | 395 | ); |
67337c4a MD |
396 | side_event(my_provider_event_dynamic_vla_struct, |
397 | side_arg_list(side_arg_dynamic_vla(&myvla))); | |
7ce1b78f MD |
398 | } |
399 | ||
67337c4a MD |
400 | side_static_event(my_provider_event_dynamic_struct_vla, |
401 | "myprovider", "mydynamicstructvla", SIDE_LOGLEVEL_DEBUG, | |
402 | side_field_list( | |
403 | side_field_dynamic("dynamic"), | |
a82ffcff | 404 | ) |
980bfdc4 MD |
405 | ); |
406 | ||
407 | static | |
c208889e | 408 | void test_dynamic_struct_vla(void) |
980bfdc4 | 409 | { |
67337c4a MD |
410 | side_arg_dynamic_define_vec(myvla, |
411 | side_arg_list( | |
a82ffcff MD |
412 | side_arg_dynamic_u32(1), |
413 | side_arg_dynamic_u32(2), | |
414 | side_arg_dynamic_u32(3), | |
415 | ) | |
df075fa5 | 416 | ); |
67337c4a MD |
417 | side_arg_dynamic_define_vec(myvla2, |
418 | side_arg_list( | |
a82ffcff MD |
419 | side_arg_dynamic_u32(4), |
420 | side_arg_dynamic_u64(5), | |
421 | side_arg_dynamic_u32(6), | |
422 | ) | |
df075fa5 | 423 | ); |
67337c4a MD |
424 | side_arg_dynamic_define_struct(mystruct, |
425 | side_arg_list( | |
426 | side_arg_dynamic_field("a", side_arg_dynamic_vla(&myvla)), | |
427 | side_arg_dynamic_field("b", side_arg_dynamic_vla(&myvla2)), | |
a82ffcff | 428 | ) |
980bfdc4 | 429 | ); |
67337c4a MD |
430 | side_event(my_provider_event_dynamic_struct_vla, |
431 | side_arg_list(side_arg_dynamic_struct(&mystruct))); | |
980bfdc4 MD |
432 | } |
433 | ||
67337c4a MD |
434 | side_static_event(my_provider_event_dynamic_nested_vla, |
435 | "myprovider", "mydynamicnestedvla", SIDE_LOGLEVEL_DEBUG, | |
436 | side_field_list( | |
437 | side_field_dynamic("dynamic"), | |
a82ffcff | 438 | ) |
948e3e72 MD |
439 | ); |
440 | ||
441 | static | |
442 | void test_dynamic_nested_vla(void) | |
443 | { | |
67337c4a MD |
444 | side_arg_dynamic_define_vec(nestedvla, |
445 | side_arg_list( | |
a82ffcff MD |
446 | side_arg_dynamic_u32(1), |
447 | side_arg_dynamic_u16(2), | |
448 | side_arg_dynamic_u32(3), | |
449 | ) | |
948e3e72 | 450 | ); |
67337c4a MD |
451 | side_arg_dynamic_define_vec(nestedvla2, |
452 | side_arg_list( | |
a82ffcff MD |
453 | side_arg_dynamic_u8(4), |
454 | side_arg_dynamic_u32(5), | |
455 | side_arg_dynamic_u32(6), | |
456 | ) | |
948e3e72 | 457 | ); |
67337c4a MD |
458 | side_arg_dynamic_define_vec(myvla, |
459 | side_arg_list( | |
460 | side_arg_dynamic_vla(&nestedvla), | |
461 | side_arg_dynamic_vla(&nestedvla2), | |
a82ffcff | 462 | ) |
948e3e72 | 463 | ); |
67337c4a MD |
464 | side_event(my_provider_event_dynamic_nested_vla, |
465 | side_arg_list(side_arg_dynamic_vla(&myvla))); | |
948e3e72 MD |
466 | } |
467 | ||
67337c4a MD |
468 | side_static_event_variadic(my_provider_event_variadic, |
469 | "myprovider", "myvariadicevent", SIDE_LOGLEVEL_DEBUG, | |
a82ffcff | 470 | side_field_list() |
19fa6aa2 MD |
471 | ); |
472 | ||
473 | static | |
474 | void test_variadic(void) | |
475 | { | |
67337c4a MD |
476 | side_event_variadic(my_provider_event_variadic, |
477 | side_arg_list(), | |
478 | side_arg_list( | |
a82ffcff MD |
479 | side_arg_dynamic_field("a", side_arg_dynamic_u32(55)), |
480 | side_arg_dynamic_field("b", side_arg_dynamic_s8(-4)), | |
481 | ) | |
19fa6aa2 MD |
482 | ); |
483 | } | |
484 | ||
67337c4a MD |
485 | side_static_event_variadic(my_provider_event_static_variadic, |
486 | "myprovider", "mystaticvariadicevent", SIDE_LOGLEVEL_DEBUG, | |
487 | side_field_list( | |
a82ffcff MD |
488 | side_field_u32("abc"), |
489 | side_field_u16("def"), | |
490 | ) | |
41c4d119 MD |
491 | ); |
492 | ||
493 | static | |
494 | void test_static_variadic(void) | |
495 | { | |
67337c4a MD |
496 | side_event_variadic(my_provider_event_static_variadic, |
497 | side_arg_list( | |
498 | side_arg_u32(1), | |
499 | side_arg_u16(2), | |
41c4d119 | 500 | ), |
67337c4a | 501 | side_arg_list( |
a82ffcff MD |
502 | side_arg_dynamic_field("a", side_arg_dynamic_u32(55)), |
503 | side_arg_dynamic_field("b", side_arg_dynamic_s8(-4)), | |
504 | ) | |
41c4d119 MD |
505 | ); |
506 | } | |
507 | ||
67337c4a MD |
508 | side_static_event(my_provider_event_bool, "myprovider", "myeventbool", SIDE_LOGLEVEL_DEBUG, |
509 | side_field_list( | |
a82ffcff MD |
510 | side_field_bool("a_false"), |
511 | side_field_bool("b_true"), | |
512 | side_field_bool("c_true"), | |
513 | side_field_bool("d_true"), | |
514 | side_field_bool("e_true"), | |
515 | side_field_bool("f_false"), | |
516 | side_field_bool("g_true"), | |
517 | ) | |
4f40d951 MD |
518 | ); |
519 | ||
520 | static | |
521 | void test_bool(void) | |
522 | { | |
523 | uint32_t a = 0; | |
524 | uint32_t b = 1; | |
525 | uint64_t c = 0x12345678; | |
526 | int16_t d = -32768; | |
527 | bool e = true; | |
528 | bool f = false; | |
529 | uint32_t g = 256; | |
530 | ||
67337c4a MD |
531 | side_event(my_provider_event_bool, |
532 | side_arg_list( | |
533 | side_arg_bool(a), | |
534 | side_arg_bool(b), | |
535 | side_arg_bool(c), | |
536 | side_arg_bool(d), | |
537 | side_arg_bool(e), | |
538 | side_arg_bool(f), | |
539 | side_arg_bool(g), | |
4f40d951 MD |
540 | ) |
541 | ); | |
542 | } | |
543 | ||
67337c4a MD |
544 | side_static_event_variadic(my_provider_event_dynamic_bool, |
545 | "myprovider", "mydynamicbool", SIDE_LOGLEVEL_DEBUG, | |
a82ffcff | 546 | side_field_list() |
4f40d951 MD |
547 | ); |
548 | ||
549 | static | |
550 | void test_dynamic_bool(void) | |
551 | { | |
67337c4a MD |
552 | side_event_variadic(my_provider_event_dynamic_bool, |
553 | side_arg_list(), | |
554 | side_arg_list( | |
a82ffcff MD |
555 | side_arg_dynamic_field("a_true", side_arg_dynamic_bool(55)), |
556 | side_arg_dynamic_field("b_true", side_arg_dynamic_bool(-4)), | |
557 | side_arg_dynamic_field("c_false", side_arg_dynamic_bool(0)), | |
558 | side_arg_dynamic_field("d_true", side_arg_dynamic_bool(256)), | |
559 | ) | |
4f40d951 MD |
560 | ); |
561 | } | |
562 | ||
67337c4a MD |
563 | side_static_event(my_provider_event_dynamic_vla_visitor, |
564 | "myprovider", "mydynamicvlavisitor", SIDE_LOGLEVEL_DEBUG, | |
565 | side_field_list( | |
566 | side_field_dynamic("dynamic"), | |
a82ffcff | 567 | ) |
8ceca0cd MD |
568 | ); |
569 | ||
570 | struct app_dynamic_vla_visitor_ctx { | |
571 | const uint32_t *ptr; | |
572 | uint32_t length; | |
573 | }; | |
574 | ||
575 | static | |
67337c4a | 576 | enum side_visitor_status test_dynamic_vla_visitor(const struct side_tracer_visitor_ctx *tracer_ctx, void *_ctx) |
8ceca0cd MD |
577 | { |
578 | struct app_dynamic_vla_visitor_ctx *ctx = (struct app_dynamic_vla_visitor_ctx *) _ctx; | |
579 | uint32_t length = ctx->length, i; | |
580 | ||
581 | for (i = 0; i < length; i++) { | |
a82ffcff | 582 | const struct side_arg elem = side_arg_dynamic_u32(ctx->ptr[i]); |
67337c4a MD |
583 | if (tracer_ctx->write_elem(tracer_ctx, &elem) != SIDE_VISITOR_STATUS_OK) |
584 | return SIDE_VISITOR_STATUS_ERROR; | |
8ceca0cd | 585 | } |
67337c4a | 586 | return SIDE_VISITOR_STATUS_OK; |
8ceca0cd MD |
587 | } |
588 | ||
589 | static uint32_t testarray_dynamic_vla[] = { 1, 2, 3, 4, 5, 6, 7, 8 }; | |
590 | ||
591 | static | |
592 | void test_dynamic_vla_with_visitor(void) | |
593 | { | |
67337c4a | 594 | side_event_cond(my_provider_event_dynamic_vla_visitor) { |
8ceca0cd MD |
595 | struct app_dynamic_vla_visitor_ctx ctx = { |
596 | .ptr = testarray_dynamic_vla, | |
67337c4a | 597 | .length = SIDE_ARRAY_SIZE(testarray_dynamic_vla), |
8ceca0cd | 598 | }; |
67337c4a MD |
599 | side_event_call(my_provider_event_dynamic_vla_visitor, |
600 | side_arg_list( | |
a82ffcff | 601 | side_arg_dynamic_vla_visitor(test_dynamic_vla_visitor, &ctx) |
8ceca0cd MD |
602 | ) |
603 | ); | |
604 | } | |
605 | } | |
606 | ||
67337c4a MD |
607 | side_static_event(my_provider_event_dynamic_struct_visitor, |
608 | "myprovider", "mydynamicstructvisitor", SIDE_LOGLEVEL_DEBUG, | |
609 | side_field_list( | |
610 | side_field_dynamic("dynamic"), | |
a82ffcff | 611 | ) |
2b359235 MD |
612 | ); |
613 | ||
614 | struct struct_visitor_pair { | |
615 | const char *name; | |
616 | uint32_t value; | |
617 | }; | |
618 | ||
619 | struct app_dynamic_struct_visitor_ctx { | |
620 | const struct struct_visitor_pair *ptr; | |
621 | uint32_t length; | |
622 | }; | |
623 | ||
624 | static | |
67337c4a | 625 | enum side_visitor_status test_dynamic_struct_visitor(const struct side_tracer_dynamic_struct_visitor_ctx *tracer_ctx, void *_ctx) |
2b359235 MD |
626 | { |
627 | struct app_dynamic_struct_visitor_ctx *ctx = (struct app_dynamic_struct_visitor_ctx *) _ctx; | |
628 | uint32_t length = ctx->length, i; | |
629 | ||
630 | for (i = 0; i < length; i++) { | |
f13253cb MD |
631 | struct side_arg_dynamic_field dynamic_field = |
632 | side_arg_dynamic_field(ctx->ptr[i].name, | |
633 | side_arg_dynamic_u32(ctx->ptr[i].value)); | |
67337c4a MD |
634 | if (tracer_ctx->write_field(tracer_ctx, &dynamic_field) != SIDE_VISITOR_STATUS_OK) |
635 | return SIDE_VISITOR_STATUS_ERROR; | |
2b359235 | 636 | } |
67337c4a | 637 | return SIDE_VISITOR_STATUS_OK; |
2b359235 MD |
638 | } |
639 | ||
640 | static struct struct_visitor_pair testarray_dynamic_struct[] = { | |
641 | { "a", 1, }, | |
642 | { "b", 2, }, | |
643 | { "c", 3, }, | |
644 | { "d", 4, }, | |
645 | }; | |
646 | ||
647 | static | |
648 | void test_dynamic_struct_with_visitor(void) | |
649 | { | |
67337c4a | 650 | side_event_cond(my_provider_event_dynamic_struct_visitor) { |
2b359235 MD |
651 | struct app_dynamic_struct_visitor_ctx ctx = { |
652 | .ptr = testarray_dynamic_struct, | |
67337c4a | 653 | .length = SIDE_ARRAY_SIZE(testarray_dynamic_struct), |
2b359235 | 654 | }; |
67337c4a MD |
655 | side_event_call(my_provider_event_dynamic_struct_visitor, |
656 | side_arg_list( | |
a82ffcff | 657 | side_arg_dynamic_struct_visitor(test_dynamic_struct_visitor, &ctx) |
2b359235 MD |
658 | ) |
659 | ); | |
660 | } | |
661 | } | |
662 | ||
67337c4a MD |
663 | side_static_event(my_provider_event_user_attribute, "myprovider", "myevent_user_attribute", SIDE_LOGLEVEL_DEBUG, |
664 | side_field_list( | |
a82ffcff MD |
665 | side_field_u32("abc"), |
666 | side_field_s64("def"), | |
399c836b | 667 | ), |
67337c4a MD |
668 | side_attr_list( |
669 | side_attr("user_attribute_a", side_attr_string("val1")), | |
670 | side_attr("user_attribute_b", side_attr_string("val2")), | |
65010f43 MD |
671 | ) |
672 | ); | |
673 | ||
674 | static | |
675 | void test_event_user_attribute(void) | |
676 | { | |
67337c4a | 677 | side_event(my_provider_event_user_attribute, side_arg_list(side_arg_u32(1), side_arg_s64(2))); |
65010f43 MD |
678 | } |
679 | ||
67337c4a MD |
680 | side_static_event(my_provider_field_user_attribute, "myprovider", "myevent_field_attribute", SIDE_LOGLEVEL_DEBUG, |
681 | side_field_list( | |
682 | side_field_u32("abc", | |
683 | side_attr_list( | |
684 | side_attr("user_attribute_a", side_attr_string("val1")), | |
685 | side_attr("user_attribute_b", side_attr_u32(2)), | |
a848763d MD |
686 | ) |
687 | ), | |
67337c4a MD |
688 | side_field_s64("def", |
689 | side_attr_list( | |
690 | side_attr("user_attribute_c", side_attr_string("val3")), | |
691 | side_attr("user_attribute_d", side_attr_s64(-5)), | |
a848763d MD |
692 | ) |
693 | ), | |
a82ffcff | 694 | ) |
a848763d MD |
695 | ); |
696 | ||
697 | static | |
698 | void test_field_user_attribute(void) | |
699 | { | |
67337c4a | 700 | side_event(my_provider_field_user_attribute, side_arg_list(side_arg_u32(1), side_arg_s64(2))); |
a848763d MD |
701 | } |
702 | ||
67337c4a MD |
703 | side_static_event_variadic(my_provider_event_variadic_attr, |
704 | "myprovider", "myvariadiceventattr", SIDE_LOGLEVEL_DEBUG, | |
a82ffcff | 705 | side_field_list() |
808bd9bf MD |
706 | ); |
707 | ||
708 | static | |
709 | void test_variadic_attr(void) | |
710 | { | |
67337c4a MD |
711 | side_event_variadic(my_provider_event_variadic_attr, |
712 | side_arg_list(), | |
713 | side_arg_list( | |
714 | side_arg_dynamic_field("a", | |
715 | side_arg_dynamic_u32(55, | |
716 | side_attr_list( | |
717 | side_attr("user_attribute_c", side_attr_string("valX")), | |
718 | side_attr("user_attribute_d", side_attr_u8(55)), | |
808bd9bf MD |
719 | ) |
720 | ) | |
721 | ), | |
67337c4a MD |
722 | side_arg_dynamic_field("b", |
723 | side_arg_dynamic_s8(-4, | |
724 | side_attr_list( | |
725 | side_attr("X", side_attr_u8(1)), | |
726 | side_attr("Y", side_attr_s8(2)), | |
808bd9bf MD |
727 | ) |
728 | ) | |
729 | ), | |
a82ffcff | 730 | ) |
808bd9bf MD |
731 | ); |
732 | } | |
733 | ||
67337c4a MD |
734 | side_static_event_variadic(my_provider_event_variadic_vla_attr, |
735 | "myprovider", "myvariadiceventvlaattr", SIDE_LOGLEVEL_DEBUG, | |
a82ffcff | 736 | side_field_list() |
808bd9bf MD |
737 | ); |
738 | ||
739 | static | |
740 | void test_variadic_vla_attr(void) | |
741 | { | |
67337c4a MD |
742 | side_arg_dynamic_define_vec(myvla, |
743 | side_arg_list( | |
744 | side_arg_dynamic_u32(1, | |
745 | side_attr_list( | |
746 | side_attr("Z", side_attr_u8(0)), | |
747 | side_attr("A", side_attr_u8(123)), | |
808bd9bf MD |
748 | ) |
749 | ), | |
a82ffcff MD |
750 | side_arg_dynamic_u32(2), |
751 | side_arg_dynamic_u32(3), | |
8d20e708 | 752 | ), |
67337c4a MD |
753 | side_attr_list( |
754 | side_attr("X", side_attr_u8(1)), | |
755 | side_attr("Y", side_attr_u8(2)), | |
808bd9bf MD |
756 | ) |
757 | ); | |
67337c4a MD |
758 | side_event_variadic(my_provider_event_variadic_vla_attr, |
759 | side_arg_list(), | |
760 | side_arg_list( | |
761 | side_arg_dynamic_field("a", side_arg_dynamic_vla(&myvla)), | |
a82ffcff | 762 | ) |
808bd9bf MD |
763 | ); |
764 | } | |
765 | ||
67337c4a MD |
766 | side_static_event_variadic(my_provider_event_variadic_struct_attr, |
767 | "myprovider", "myvariadiceventstructattr", SIDE_LOGLEVEL_DEBUG, | |
a82ffcff | 768 | side_field_list() |
808bd9bf MD |
769 | ); |
770 | ||
771 | static | |
772 | void test_variadic_struct_attr(void) | |
773 | { | |
67337c4a MD |
774 | side_event_cond(my_provider_event_variadic_struct_attr) { |
775 | side_arg_dynamic_define_struct(mystruct, | |
776 | side_arg_list( | |
777 | side_arg_dynamic_field("a", | |
778 | side_arg_dynamic_u32(43, | |
779 | side_attr_list( | |
780 | side_attr("A", side_attr_bool(true)), | |
808bd9bf MD |
781 | ) |
782 | ) | |
783 | ), | |
a82ffcff | 784 | side_arg_dynamic_field("b", side_arg_dynamic_u8(55)), |
8d20e708 | 785 | ), |
67337c4a MD |
786 | side_attr_list( |
787 | side_attr("X", side_attr_u8(1)), | |
788 | side_attr("Y", side_attr_u8(2)), | |
808bd9bf MD |
789 | ) |
790 | ); | |
67337c4a MD |
791 | side_event_call_variadic(my_provider_event_variadic_struct_attr, |
792 | side_arg_list(), | |
793 | side_arg_list( | |
794 | side_arg_dynamic_field("a", side_arg_dynamic_struct(&mystruct)), | |
a82ffcff | 795 | ) |
808bd9bf MD |
796 | ); |
797 | } | |
798 | } | |
799 | ||
67337c4a MD |
800 | side_static_event(my_provider_event_float, "myprovider", "myeventfloat", SIDE_LOGLEVEL_DEBUG, |
801 | side_field_list( | |
fb25b355 | 802 | #if __HAVE_FLOAT16 |
a82ffcff MD |
803 | side_field_float_binary16("binary16"), |
804 | side_field_float_binary16_le("binary16_le"), | |
805 | side_field_float_binary16_be("binary16_be"), | |
fb25b355 MD |
806 | #endif |
807 | #if __HAVE_FLOAT32 | |
a82ffcff MD |
808 | side_field_float_binary32("binary32"), |
809 | side_field_float_binary32_le("binary32_le"), | |
810 | side_field_float_binary32_be("binary32_be"), | |
fb25b355 MD |
811 | #endif |
812 | #if __HAVE_FLOAT64 | |
a82ffcff MD |
813 | side_field_float_binary64("binary64"), |
814 | side_field_float_binary64_le("binary64_le"), | |
815 | side_field_float_binary64_be("binary64_be"), | |
fb25b355 MD |
816 | #endif |
817 | #if __HAVE_FLOAT128 | |
a82ffcff MD |
818 | side_field_float_binary128("binary128"), |
819 | side_field_float_binary128_le("binary128_le"), | |
820 | side_field_float_binary128_be("binary128_be"), | |
fb25b355 | 821 | #endif |
a82ffcff | 822 | ) |
fb25b355 MD |
823 | ); |
824 | ||
825 | static | |
826 | void test_float(void) | |
827 | { | |
8bdd5c12 MD |
828 | #if __HAVE_FLOAT16 |
829 | union { | |
830 | _Float16 f; | |
831 | uint16_t u; | |
832 | } float16 = { | |
833 | .f = 1.1, | |
834 | }; | |
835 | #endif | |
836 | #if __HAVE_FLOAT32 | |
837 | union { | |
838 | _Float32 f; | |
839 | uint32_t u; | |
840 | } float32 = { | |
841 | .f = 2.2, | |
842 | }; | |
843 | #endif | |
844 | #if __HAVE_FLOAT64 | |
845 | union { | |
846 | _Float64 f; | |
847 | uint64_t u; | |
848 | } float64 = { | |
849 | .f = 3.3, | |
850 | }; | |
851 | #endif | |
852 | #if __HAVE_FLOAT128 | |
853 | union { | |
854 | _Float128 f; | |
855 | char arr[16]; | |
856 | } float128 = { | |
857 | .f = 4.4, | |
858 | }; | |
859 | #endif | |
860 | ||
861 | #if __HAVE_FLOAT16 | |
67337c4a | 862 | float16.u = side_bswap_16(float16.u); |
8bdd5c12 MD |
863 | #endif |
864 | #if __HAVE_FLOAT32 | |
67337c4a | 865 | float32.u = side_bswap_32(float32.u); |
8bdd5c12 MD |
866 | #endif |
867 | #if __HAVE_FLOAT64 | |
67337c4a | 868 | float64.u = side_bswap_64(float64.u); |
8bdd5c12 MD |
869 | #endif |
870 | #if __HAVE_FLOAT128 | |
67337c4a | 871 | side_bswap_128p(float128.arr); |
8bdd5c12 MD |
872 | #endif |
873 | ||
67337c4a MD |
874 | side_event(my_provider_event_float, |
875 | side_arg_list( | |
fb25b355 | 876 | #if __HAVE_FLOAT16 |
67337c4a MD |
877 | side_arg_float_binary16(1.1), |
878 | # if SIDE_FLOAT_WORD_ORDER == SIDE_LITTLE_ENDIAN | |
879 | side_arg_float_binary16(1.1), | |
880 | side_arg_float_binary16(float16.f), | |
8bdd5c12 | 881 | # else |
67337c4a MD |
882 | side_arg_float_binary16(float16.f), |
883 | side_arg_float_binary16(1.1), | |
8bdd5c12 | 884 | # endif |
fb25b355 MD |
885 | #endif |
886 | #if __HAVE_FLOAT32 | |
67337c4a MD |
887 | side_arg_float_binary32(2.2), |
888 | # if SIDE_FLOAT_WORD_ORDER == SIDE_LITTLE_ENDIAN | |
889 | side_arg_float_binary32(2.2), | |
890 | side_arg_float_binary32(float32.f), | |
8bdd5c12 | 891 | # else |
67337c4a MD |
892 | side_arg_float_binary32(float32.f), |
893 | side_arg_float_binary32(2.2), | |
8bdd5c12 | 894 | # endif |
fb25b355 MD |
895 | #endif |
896 | #if __HAVE_FLOAT64 | |
67337c4a MD |
897 | side_arg_float_binary64(3.3), |
898 | # if SIDE_FLOAT_WORD_ORDER == SIDE_LITTLE_ENDIAN | |
899 | side_arg_float_binary64(3.3), | |
900 | side_arg_float_binary64(float64.f), | |
8bdd5c12 | 901 | # else |
67337c4a MD |
902 | side_arg_float_binary64(float64.f), |
903 | side_arg_float_binary64(3.3), | |
8bdd5c12 | 904 | # endif |
fb25b355 MD |
905 | #endif |
906 | #if __HAVE_FLOAT128 | |
67337c4a MD |
907 | side_arg_float_binary128(4.4), |
908 | # if SIDE_FLOAT_WORD_ORDER == SIDE_LITTLE_ENDIAN | |
909 | side_arg_float_binary128(4.4), | |
910 | side_arg_float_binary128(float128.f), | |
8bdd5c12 | 911 | # else |
67337c4a MD |
912 | side_arg_float_binary128(float128.f), |
913 | side_arg_float_binary128(4.4), | |
8bdd5c12 | 914 | # endif |
fb25b355 MD |
915 | #endif |
916 | ) | |
917 | ); | |
918 | } | |
919 | ||
67337c4a MD |
920 | side_static_event_variadic(my_provider_event_variadic_float, |
921 | "myprovider", "myvariadicfloat", SIDE_LOGLEVEL_DEBUG, | |
a82ffcff | 922 | side_field_list() |
fb25b355 MD |
923 | ); |
924 | ||
925 | static | |
926 | void test_variadic_float(void) | |
927 | { | |
8bdd5c12 MD |
928 | #if __HAVE_FLOAT16 |
929 | union { | |
930 | _Float16 f; | |
931 | uint16_t u; | |
932 | } float16 = { | |
933 | .f = 1.1, | |
934 | }; | |
935 | #endif | |
936 | #if __HAVE_FLOAT32 | |
937 | union { | |
938 | _Float32 f; | |
939 | uint32_t u; | |
940 | } float32 = { | |
941 | .f = 2.2, | |
942 | }; | |
943 | #endif | |
944 | #if __HAVE_FLOAT64 | |
945 | union { | |
946 | _Float64 f; | |
947 | uint64_t u; | |
948 | } float64 = { | |
949 | .f = 3.3, | |
950 | }; | |
951 | #endif | |
952 | #if __HAVE_FLOAT128 | |
953 | union { | |
954 | _Float128 f; | |
955 | char arr[16]; | |
956 | } float128 = { | |
957 | .f = 4.4, | |
958 | }; | |
959 | #endif | |
960 | ||
961 | #if __HAVE_FLOAT16 | |
67337c4a | 962 | float16.u = side_bswap_16(float16.u); |
8bdd5c12 MD |
963 | #endif |
964 | #if __HAVE_FLOAT32 | |
67337c4a | 965 | float32.u = side_bswap_32(float32.u); |
8bdd5c12 MD |
966 | #endif |
967 | #if __HAVE_FLOAT64 | |
67337c4a | 968 | float64.u = side_bswap_64(float64.u); |
8bdd5c12 MD |
969 | #endif |
970 | #if __HAVE_FLOAT128 | |
67337c4a | 971 | side_bswap_128p(float128.arr); |
8bdd5c12 MD |
972 | #endif |
973 | ||
67337c4a MD |
974 | side_event_variadic(my_provider_event_variadic_float, |
975 | side_arg_list(), | |
976 | side_arg_list( | |
fb25b355 | 977 | #if __HAVE_FLOAT16 |
a82ffcff | 978 | side_arg_dynamic_field("binary16", side_arg_dynamic_float_binary16(1.1)), |
67337c4a | 979 | # if SIDE_FLOAT_WORD_ORDER == SIDE_LITTLE_ENDIAN |
a82ffcff MD |
980 | side_arg_dynamic_field("binary16_le", side_arg_dynamic_float_binary16_le(1.1)), |
981 | side_arg_dynamic_field("binary16_be", side_arg_dynamic_float_binary16_be(float16.f)), | |
8bdd5c12 | 982 | # else |
a82ffcff MD |
983 | side_arg_dynamic_field("binary16_le", side_arg_dynamic_float_binary16_le(float16.f)), |
984 | side_arg_dynamic_field("binary16_be", side_arg_dynamic_float_binary16_be(1.1)), | |
8bdd5c12 | 985 | # endif |
fb25b355 MD |
986 | #endif |
987 | #if __HAVE_FLOAT32 | |
a82ffcff | 988 | side_arg_dynamic_field("binary32", side_arg_dynamic_float_binary32(2.2)), |
67337c4a | 989 | # if SIDE_FLOAT_WORD_ORDER == SIDE_LITTLE_ENDIAN |
a82ffcff MD |
990 | side_arg_dynamic_field("binary32_le", side_arg_dynamic_float_binary32_le(2.2)), |
991 | side_arg_dynamic_field("binary32_be", side_arg_dynamic_float_binary32_be(float32.f)), | |
8bdd5c12 | 992 | # else |
a82ffcff MD |
993 | side_arg_dynamic_field("binary32_le", side_arg_dynamic_float_binary32_le(float32.f)), |
994 | side_arg_dynamic_field("binary32_be", side_arg_dynamic_float_binary32_be(2.2)), | |
8bdd5c12 | 995 | # endif |
fb25b355 MD |
996 | #endif |
997 | #if __HAVE_FLOAT64 | |
a82ffcff | 998 | side_arg_dynamic_field("binary64", side_arg_dynamic_float_binary64(3.3)), |
67337c4a | 999 | # if SIDE_FLOAT_WORD_ORDER == SIDE_LITTLE_ENDIAN |
a82ffcff MD |
1000 | side_arg_dynamic_field("binary64_le", side_arg_dynamic_float_binary64_le(3.3)), |
1001 | side_arg_dynamic_field("binary64_be", side_arg_dynamic_float_binary64_be(float64.f)), | |
8bdd5c12 | 1002 | # else |
a82ffcff MD |
1003 | side_arg_dynamic_field("binary64_le", side_arg_dynamic_float_binary64_le(float64.f)), |
1004 | side_arg_dynamic_field("binary64_be", side_arg_dynamic_float_binary64_be(3.3)), | |
8bdd5c12 | 1005 | # endif |
fb25b355 MD |
1006 | #endif |
1007 | #if __HAVE_FLOAT128 | |
a82ffcff | 1008 | side_arg_dynamic_field("binary128", side_arg_dynamic_float_binary128(4.4)), |
67337c4a | 1009 | # if SIDE_FLOAT_WORD_ORDER == SIDE_LITTLE_ENDIAN |
a82ffcff MD |
1010 | side_arg_dynamic_field("binary128_le", side_arg_dynamic_float_binary128_le(4.4)), |
1011 | side_arg_dynamic_field("binary128_be", side_arg_dynamic_float_binary128_be(float128.f)), | |
8bdd5c12 | 1012 | # else |
a82ffcff MD |
1013 | side_arg_dynamic_field("binary128_le", side_arg_dynamic_float_binary128_le(float128.f)), |
1014 | side_arg_dynamic_field("binary128_be", side_arg_dynamic_float_binary128_be(4.4)), | |
8bdd5c12 | 1015 | # endif |
fb25b355 | 1016 | #endif |
a82ffcff | 1017 | ) |
fb25b355 MD |
1018 | ); |
1019 | } | |
1020 | ||
67337c4a MD |
1021 | static side_define_enum(myenum, |
1022 | side_enum_mapping_list( | |
1023 | side_enum_mapping_range("one-ten", 1, 10), | |
1024 | side_enum_mapping_range("100-200", 100, 200), | |
1025 | side_enum_mapping_value("200", 200), | |
1026 | side_enum_mapping_value("300", 300), | |
a82ffcff | 1027 | ) |
79f677ba MD |
1028 | ); |
1029 | ||
67337c4a MD |
1030 | side_static_event(my_provider_event_enum, "myprovider", "myeventenum", SIDE_LOGLEVEL_DEBUG, |
1031 | side_field_list( | |
a82ffcff MD |
1032 | side_field_enum("5", &myenum, side_elem(side_type_u32())), |
1033 | side_field_enum("400", &myenum, side_elem(side_type_u64())), | |
1034 | side_field_enum("200", &myenum, side_elem(side_type_u8())), | |
1035 | side_field_enum("-100", &myenum, side_elem(side_type_s8())), | |
1036 | side_field_enum("6_be", &myenum, side_elem(side_type_u32_be())), | |
1037 | side_field_enum("6_le", &myenum, side_elem(side_type_u32_le())), | |
1038 | ) | |
79f677ba MD |
1039 | ); |
1040 | ||
1041 | static | |
1042 | void test_enum(void) | |
1043 | { | |
67337c4a MD |
1044 | side_event(my_provider_event_enum, |
1045 | side_arg_list( | |
1046 | side_arg_u32(5), | |
1047 | side_arg_u64(400), | |
1048 | side_arg_u8(200), | |
1049 | side_arg_s8(-100), | |
1050 | #if SIDE_BYTE_ORDER == SIDE_LITTLE_ENDIAN | |
1051 | side_arg_u32(side_bswap_32(6)), | |
1052 | side_arg_u32(6), | |
8bdd5c12 | 1053 | #else |
67337c4a MD |
1054 | side_arg_u32(6), |
1055 | side_arg_u32(side_bswap_32(6)), | |
8bdd5c12 | 1056 | #endif |
79f677ba MD |
1057 | ) |
1058 | ); | |
1059 | } | |
1060 | ||
ea32e5fc | 1061 | /* A bitmap enum maps bits to labels. */ |
67337c4a MD |
1062 | static side_define_enum_bitmap(myenum_bitmap, |
1063 | side_enum_bitmap_mapping_list( | |
1064 | side_enum_bitmap_mapping_value("0", 0), | |
1065 | side_enum_bitmap_mapping_range("1-2", 1, 2), | |
1066 | side_enum_bitmap_mapping_range("2-4", 2, 4), | |
1067 | side_enum_bitmap_mapping_value("3", 3), | |
1068 | side_enum_bitmap_mapping_value("30", 30), | |
1069 | side_enum_bitmap_mapping_value("63", 63), | |
1070 | side_enum_bitmap_mapping_range("158-160", 158, 160), | |
1071 | side_enum_bitmap_mapping_value("159", 159), | |
1072 | side_enum_bitmap_mapping_range("500-700", 500, 700), | |
a82ffcff | 1073 | ) |
ea32e5fc MD |
1074 | ); |
1075 | ||
67337c4a MD |
1076 | side_static_event(my_provider_event_enum_bitmap, "myprovider", "myeventenumbitmap", SIDE_LOGLEVEL_DEBUG, |
1077 | side_field_list( | |
a82ffcff MD |
1078 | side_field_enum_bitmap("bit_0", &myenum_bitmap, side_elem(side_type_u32())), |
1079 | side_field_enum_bitmap("bit_1", &myenum_bitmap, side_elem(side_type_u32())), | |
1080 | side_field_enum_bitmap("bit_2", &myenum_bitmap, side_elem(side_type_u8())), | |
1081 | side_field_enum_bitmap("bit_3", &myenum_bitmap, side_elem(side_type_u8())), | |
1082 | side_field_enum_bitmap("bit_30", &myenum_bitmap, side_elem(side_type_u32())), | |
1083 | side_field_enum_bitmap("bit_31", &myenum_bitmap, side_elem(side_type_u32())), | |
1084 | side_field_enum_bitmap("bit_63", &myenum_bitmap, side_elem(side_type_u64())), | |
1085 | side_field_enum_bitmap("bits_1+63", &myenum_bitmap, side_elem(side_type_u64())), | |
1086 | side_field_enum_bitmap("byte_bit_2", &myenum_bitmap, side_elem(side_type_byte())), | |
67337c4a | 1087 | side_field_enum_bitmap("bit_159", &myenum_bitmap, |
a82ffcff | 1088 | side_elem(side_type_array(side_elem(side_type_u32()), 5))), |
67337c4a | 1089 | side_field_enum_bitmap("bit_159", &myenum_bitmap, |
a82ffcff MD |
1090 | side_elem(side_type_vla(side_elem(side_type_u32())))), |
1091 | side_field_enum_bitmap("bit_2_be", &myenum_bitmap, side_elem(side_type_u32_be())), | |
1092 | side_field_enum_bitmap("bit_2_le", &myenum_bitmap, side_elem(side_type_u32_le())), | |
1093 | ) | |
ea32e5fc MD |
1094 | ); |
1095 | ||
1096 | static | |
1097 | void test_enum_bitmap(void) | |
1098 | { | |
67337c4a MD |
1099 | side_event_cond(my_provider_event_enum_bitmap) { |
1100 | side_arg_define_vec(myarray, | |
1101 | side_arg_list( | |
1102 | side_arg_u32(0), | |
1103 | side_arg_u32(0), | |
1104 | side_arg_u32(0), | |
1105 | side_arg_u32(0), | |
1106 | side_arg_u32(0x80000000), /* bit 159 */ | |
af6aa6e1 MD |
1107 | ) |
1108 | ); | |
67337c4a MD |
1109 | side_event_call(my_provider_event_enum_bitmap, |
1110 | side_arg_list( | |
1111 | side_arg_u32(1U << 0), | |
1112 | side_arg_u32(1U << 1), | |
1113 | side_arg_u8(1U << 2), | |
1114 | side_arg_u8(1U << 3), | |
1115 | side_arg_u32(1U << 30), | |
1116 | side_arg_u32(1U << 31), | |
1117 | side_arg_u64(1ULL << 63), | |
1118 | side_arg_u64((1ULL << 1) | (1ULL << 63)), | |
1119 | side_arg_byte(1U << 2), | |
1120 | side_arg_array(&myarray), | |
1121 | side_arg_vla(&myarray), | |
1122 | #if SIDE_BYTE_ORDER == SIDE_LITTLE_ENDIAN | |
1123 | side_arg_u32(side_bswap_32(1U << 2)), | |
1124 | side_arg_u32(1U << 2), | |
8bdd5c12 | 1125 | #else |
67337c4a MD |
1126 | side_arg_u32(1U << 2), |
1127 | side_arg_u32(side_bswap_32(1U << 2)), | |
8bdd5c12 | 1128 | #endif |
af6aa6e1 MD |
1129 | ) |
1130 | ); | |
1131 | } | |
ea32e5fc MD |
1132 | } |
1133 | ||
67337c4a MD |
1134 | side_static_event_variadic(my_provider_event_blob, "myprovider", "myeventblob", SIDE_LOGLEVEL_DEBUG, |
1135 | side_field_list( | |
a82ffcff MD |
1136 | side_field_byte("blobfield"), |
1137 | side_field_array("arrayblob", side_elem(side_type_byte()), 3), | |
1138 | ) | |
7aec0d09 MD |
1139 | ); |
1140 | ||
1141 | static | |
1142 | void test_blob(void) | |
1143 | { | |
67337c4a MD |
1144 | side_event_cond(my_provider_event_blob) { |
1145 | side_arg_define_vec(myarray, side_arg_list(side_arg_byte(1), side_arg_byte(2), side_arg_byte(3))); | |
1146 | side_arg_dynamic_define_vec(myvla, | |
1147 | side_arg_list( | |
a82ffcff MD |
1148 | side_arg_dynamic_byte(0x22), |
1149 | side_arg_dynamic_byte(0x33), | |
1150 | ) | |
199e7aa9 | 1151 | ); |
67337c4a MD |
1152 | side_event_call_variadic(my_provider_event_blob, |
1153 | side_arg_list( | |
1154 | side_arg_byte(0x55), | |
1155 | side_arg_array(&myarray), | |
199e7aa9 | 1156 | ), |
67337c4a MD |
1157 | side_arg_list( |
1158 | side_arg_dynamic_field("varblobfield", | |
a82ffcff | 1159 | side_arg_dynamic_byte(0x55) |
199e7aa9 | 1160 | ), |
67337c4a | 1161 | side_arg_dynamic_field("varblobvla", side_arg_dynamic_vla(&myvla)), |
a82ffcff | 1162 | ) |
7aec0d09 MD |
1163 | ); |
1164 | } | |
1165 | } | |
ea32e5fc | 1166 | |
67337c4a MD |
1167 | side_static_event_variadic(my_provider_event_format_string, |
1168 | "myprovider", "myeventformatstring", SIDE_LOGLEVEL_DEBUG, | |
1169 | side_field_list( | |
a82ffcff | 1170 | side_field_string("fmt"), |
71aa8975 | 1171 | ), |
67337c4a MD |
1172 | side_attr_list( |
1173 | side_attr("lang.c.format_string", side_attr_bool(true)), | |
71aa8975 MD |
1174 | ) |
1175 | ); | |
1176 | ||
1177 | static | |
1178 | void test_fmt_string(void) | |
1179 | { | |
67337c4a MD |
1180 | side_event_cond(my_provider_event_format_string) { |
1181 | side_arg_dynamic_define_vec(args, | |
1182 | side_arg_list( | |
a82ffcff MD |
1183 | side_arg_dynamic_string("blah"), |
1184 | side_arg_dynamic_s32(123), | |
1185 | ) | |
71aa8975 | 1186 | ); |
67337c4a MD |
1187 | side_event_call_variadic(my_provider_event_format_string, |
1188 | side_arg_list( | |
1189 | side_arg_string("This is a formatted string with str: %s int: %d"), | |
71aa8975 | 1190 | ), |
67337c4a MD |
1191 | side_arg_list( |
1192 | side_arg_dynamic_field("arguments", side_arg_dynamic_vla(&args)), | |
a82ffcff | 1193 | ) |
71aa8975 MD |
1194 | ); |
1195 | } | |
1196 | } | |
1197 | ||
67337c4a MD |
1198 | side_static_event_variadic(my_provider_event_endian, "myprovider", "myevent_endian", SIDE_LOGLEVEL_DEBUG, |
1199 | side_field_list( | |
a82ffcff MD |
1200 | side_field_u16_le("u16_le"), |
1201 | side_field_u32_le("u32_le"), | |
1202 | side_field_u64_le("u64_le"), | |
1203 | side_field_s16_le("s16_le"), | |
1204 | side_field_s32_le("s32_le"), | |
1205 | side_field_s64_le("s64_le"), | |
1206 | side_field_u16_be("u16_be"), | |
1207 | side_field_u32_be("u32_be"), | |
1208 | side_field_u64_be("u64_be"), | |
1209 | side_field_s16_be("s16_be"), | |
1210 | side_field_s32_be("s32_be"), | |
1211 | side_field_s64_be("s64_be"), | |
1212 | ) | |
8bdd5c12 MD |
1213 | ); |
1214 | ||
1215 | static | |
1216 | void test_endian(void) | |
1217 | { | |
67337c4a MD |
1218 | side_event_variadic(my_provider_event_endian, |
1219 | side_arg_list( | |
1220 | #if SIDE_BYTE_ORDER == SIDE_LITTLE_ENDIAN | |
1221 | side_arg_u16(1), | |
1222 | side_arg_u32(1), | |
1223 | side_arg_u64(1), | |
1224 | side_arg_s16(1), | |
1225 | side_arg_s32(1), | |
1226 | side_arg_s64(1), | |
1227 | side_arg_u16(side_bswap_16(1)), | |
1228 | side_arg_u32(side_bswap_32(1)), | |
1229 | side_arg_u64(side_bswap_64(1)), | |
1230 | side_arg_s16(side_bswap_16(1)), | |
1231 | side_arg_s32(side_bswap_32(1)), | |
1232 | side_arg_s64(side_bswap_64(1)), | |
8bdd5c12 | 1233 | #else |
67337c4a MD |
1234 | side_arg_u16(side_bswap_16(1)), |
1235 | side_arg_u32(side_bswap_32(1)), | |
1236 | side_arg_u64(side_bswap_64(1)), | |
1237 | side_arg_s16(side_bswap_16(1)), | |
1238 | side_arg_s32(side_bswap_32(1)), | |
1239 | side_arg_s64(side_bswap_64(1)), | |
1240 | side_arg_u16(1), | |
1241 | side_arg_u32(1), | |
1242 | side_arg_u64(1), | |
1243 | side_arg_s16(1), | |
1244 | side_arg_s32(1), | |
1245 | side_arg_s64(1), | |
8bdd5c12 MD |
1246 | #endif |
1247 | ), | |
67337c4a MD |
1248 | side_arg_list( |
1249 | #if SIDE_BYTE_ORDER == SIDE_LITTLE_ENDIAN | |
a82ffcff MD |
1250 | side_arg_dynamic_field("u16_le", side_arg_dynamic_u16_le(1)), |
1251 | side_arg_dynamic_field("u32_le", side_arg_dynamic_u32_le(1)), | |
1252 | side_arg_dynamic_field("u64_le", side_arg_dynamic_u64_le(1)), | |
1253 | side_arg_dynamic_field("s16_le", side_arg_dynamic_s16_le(1)), | |
1254 | side_arg_dynamic_field("s32_le", side_arg_dynamic_s32_le(1)), | |
1255 | side_arg_dynamic_field("s64_le", side_arg_dynamic_s64_le(1)), | |
1256 | side_arg_dynamic_field("u16_be", side_arg_dynamic_u16_be(side_bswap_16(1))), | |
1257 | side_arg_dynamic_field("u32_be", side_arg_dynamic_u32_be(side_bswap_32(1))), | |
1258 | side_arg_dynamic_field("u64_be", side_arg_dynamic_u64_be(side_bswap_64(1))), | |
1259 | side_arg_dynamic_field("s16_be", side_arg_dynamic_s16_be(side_bswap_16(1))), | |
1260 | side_arg_dynamic_field("s32_be", side_arg_dynamic_s32_be(side_bswap_32(1))), | |
1261 | side_arg_dynamic_field("s64_be", side_arg_dynamic_s64_be(side_bswap_64(1))), | |
8bdd5c12 | 1262 | #else |
a82ffcff MD |
1263 | side_arg_dynamic_field("u16_le", side_arg_dynamic_u16_le(side_bswap_16(1))), |
1264 | side_arg_dynamic_field("u32_le", side_arg_dynamic_u32_le(side_bswap_32(1))), | |
1265 | side_arg_dynamic_field("u64_le", side_arg_dynamic_u64_le(side_bswap_64(1))), | |
1266 | side_arg_dynamic_field("s16_le", side_arg_dynamic_s16_le(side_bswap_16(1))), | |
1267 | side_arg_dynamic_field("s32_le", side_arg_dynamic_s32_le(side_bswap_32(1))), | |
1268 | side_arg_dynamic_field("s64_le", side_arg_dynamic_s64_le(side_bswap_64(1))), | |
1269 | side_arg_dynamic_field("u16_be", side_arg_dynamic_u16_be(1)), | |
1270 | side_arg_dynamic_field("u32_be", side_arg_dynamic_u32_be(1)), | |
1271 | side_arg_dynamic_field("u64_be", side_arg_dynamic_u64_be(1)), | |
1272 | side_arg_dynamic_field("s16_be", side_arg_dynamic_s16_be(1)), | |
1273 | side_arg_dynamic_field("s32_be", side_arg_dynamic_s32_be(1)), | |
1274 | side_arg_dynamic_field("s64_be", side_arg_dynamic_s64_be(1)), | |
8bdd5c12 | 1275 | #endif |
a82ffcff | 1276 | ) |
8bdd5c12 MD |
1277 | ); |
1278 | } | |
1279 | ||
67337c4a MD |
1280 | side_static_event(my_provider_event_base, "myprovider", "myevent_base", SIDE_LOGLEVEL_DEBUG, |
1281 | side_field_list( | |
1282 | side_field_u8("u8base2", side_attr_list(side_attr("std.integer.base", side_attr_u8(2)))), | |
1283 | side_field_u8("u8base8", side_attr_list(side_attr("std.integer.base", side_attr_u8(8)))), | |
1284 | side_field_u8("u8base10", side_attr_list(side_attr("std.integer.base", side_attr_u8(10)))), | |
1285 | side_field_u8("u8base16", side_attr_list(side_attr("std.integer.base", side_attr_u8(16)))), | |
1286 | side_field_u16("u16base2", side_attr_list(side_attr("std.integer.base", side_attr_u8(2)))), | |
1287 | side_field_u16("u16base8", side_attr_list(side_attr("std.integer.base", side_attr_u8(8)))), | |
1288 | side_field_u16("u16base10", side_attr_list(side_attr("std.integer.base", side_attr_u8(10)))), | |
1289 | side_field_u16("u16base16", side_attr_list(side_attr("std.integer.base", side_attr_u8(16)))), | |
1290 | side_field_u32("u32base2", side_attr_list(side_attr("std.integer.base", side_attr_u8(2)))), | |
1291 | side_field_u32("u32base8", side_attr_list(side_attr("std.integer.base", side_attr_u8(8)))), | |
1292 | side_field_u32("u32base10", side_attr_list(side_attr("std.integer.base", side_attr_u8(10)))), | |
1293 | side_field_u32("u32base16", side_attr_list(side_attr("std.integer.base", side_attr_u8(16)))), | |
1294 | side_field_u64("u64base2", side_attr_list(side_attr("std.integer.base", side_attr_u8(2)))), | |
1295 | side_field_u64("u64base8", side_attr_list(side_attr("std.integer.base", side_attr_u8(8)))), | |
1296 | side_field_u64("u64base10", side_attr_list(side_attr("std.integer.base", side_attr_u8(10)))), | |
1297 | side_field_u64("u64base16", side_attr_list(side_attr("std.integer.base", side_attr_u8(16)))), | |
1298 | side_field_s8("s8base2", side_attr_list(side_attr("std.integer.base", side_attr_u8(2)))), | |
1299 | side_field_s8("s8base8", side_attr_list(side_attr("std.integer.base", side_attr_u8(8)))), | |
1300 | side_field_s8("s8base10", side_attr_list(side_attr("std.integer.base", side_attr_u8(10)))), | |
1301 | side_field_s8("s8base16", side_attr_list(side_attr("std.integer.base", side_attr_u8(16)))), | |
1302 | side_field_s16("s16base2", side_attr_list(side_attr("std.integer.base", side_attr_u8(2)))), | |
1303 | side_field_s16("s16base8", side_attr_list(side_attr("std.integer.base", side_attr_u8(8)))), | |
1304 | side_field_s16("s16base10", side_attr_list(side_attr("std.integer.base", side_attr_u8(10)))), | |
1305 | side_field_s16("s16base16", side_attr_list(side_attr("std.integer.base", side_attr_u8(16)))), | |
1306 | side_field_s32("s32base2", side_attr_list(side_attr("std.integer.base", side_attr_u8(2)))), | |
1307 | side_field_s32("s32base8", side_attr_list(side_attr("std.integer.base", side_attr_u8(8)))), | |
1308 | side_field_s32("s32base10", side_attr_list(side_attr("std.integer.base", side_attr_u8(10)))), | |
1309 | side_field_s32("s32base16", side_attr_list(side_attr("std.integer.base", side_attr_u8(16)))), | |
1310 | side_field_s64("s64base2", side_attr_list(side_attr("std.integer.base", side_attr_u8(2)))), | |
1311 | side_field_s64("s64base8", side_attr_list(side_attr("std.integer.base", side_attr_u8(8)))), | |
1312 | side_field_s64("s64base10", side_attr_list(side_attr("std.integer.base", side_attr_u8(10)))), | |
1313 | side_field_s64("s64base16", side_attr_list(side_attr("std.integer.base", side_attr_u8(16)))), | |
a82ffcff | 1314 | ) |
1d9c515c MD |
1315 | ); |
1316 | ||
1317 | static | |
1318 | void test_base(void) | |
1319 | { | |
67337c4a MD |
1320 | side_event(my_provider_event_base, |
1321 | side_arg_list( | |
1322 | side_arg_u8(55), | |
1323 | side_arg_u8(55), | |
1324 | side_arg_u8(55), | |
1325 | side_arg_u8(55), | |
1326 | side_arg_u16(55), | |
1327 | side_arg_u16(55), | |
1328 | side_arg_u16(55), | |
1329 | side_arg_u16(55), | |
1330 | side_arg_u32(55), | |
1331 | side_arg_u32(55), | |
1332 | side_arg_u32(55), | |
1333 | side_arg_u32(55), | |
1334 | side_arg_u64(55), | |
1335 | side_arg_u64(55), | |
1336 | side_arg_u64(55), | |
1337 | side_arg_u64(55), | |
1338 | side_arg_s8(-55), | |
1339 | side_arg_s8(-55), | |
1340 | side_arg_s8(-55), | |
1341 | side_arg_s8(-55), | |
1342 | side_arg_s16(-55), | |
1343 | side_arg_s16(-55), | |
1344 | side_arg_s16(-55), | |
1345 | side_arg_s16(-55), | |
1346 | side_arg_s32(-55), | |
1347 | side_arg_s32(-55), | |
1348 | side_arg_s32(-55), | |
1349 | side_arg_s32(-55), | |
1350 | side_arg_s64(-55), | |
1351 | side_arg_s64(-55), | |
1352 | side_arg_s64(-55), | |
1353 | side_arg_s64(-55), | |
1d9c515c MD |
1354 | ) |
1355 | ); | |
1356 | } | |
1357 | ||
7a1cb105 MD |
1358 | struct test { |
1359 | uint32_t a; | |
1360 | uint64_t b; | |
1361 | uint8_t c; | |
1362 | int32_t d; | |
1363 | uint16_t e; | |
bc0b21eb MD |
1364 | int8_t f; |
1365 | int16_t g; | |
1366 | int32_t h; | |
1367 | int64_t i; | |
1368 | int64_t j; | |
1369 | int64_t k; | |
c1723f3c | 1370 | uint64_t test; |
7a1cb105 MD |
1371 | }; |
1372 | ||
67337c4a MD |
1373 | static side_define_struct(mystructgatherdef, |
1374 | side_field_list( | |
1375 | side_field_gather_unsigned_integer("a", offsetof(struct test, a), | |
1376 | side_struct_field_sizeof(struct test, a), 0, 0, | |
a82ffcff | 1377 | SIDE_TYPE_GATHER_ACCESS_DIRECT), |
67337c4a MD |
1378 | side_field_gather_signed_integer("d", offsetof(struct test, d), |
1379 | side_struct_field_sizeof(struct test, d), 0, 0, | |
a82ffcff | 1380 | SIDE_TYPE_GATHER_ACCESS_DIRECT), |
67337c4a MD |
1381 | side_field_gather_unsigned_integer("e", offsetof(struct test, e), |
1382 | side_struct_field_sizeof(struct test, e), 8, 4, | |
1383 | SIDE_TYPE_GATHER_ACCESS_DIRECT, side_attr_list(side_attr("std.integer.base", side_attr_u8(16)))), | |
1384 | side_field_gather_signed_integer("f", offsetof(struct test, f), | |
1385 | side_struct_field_sizeof(struct test, f), 1, 4, | |
1386 | SIDE_TYPE_GATHER_ACCESS_DIRECT, side_attr_list(side_attr("std.integer.base", side_attr_u8(10)))), | |
1387 | side_field_gather_signed_integer("g", offsetof(struct test, g), | |
1388 | side_struct_field_sizeof(struct test, g), 11, 4, | |
1389 | SIDE_TYPE_GATHER_ACCESS_DIRECT, side_attr_list(side_attr("std.integer.base", side_attr_u8(10)))), | |
1390 | side_field_gather_signed_integer("h", offsetof(struct test, h), | |
1391 | side_struct_field_sizeof(struct test, h), 1, 31, | |
1392 | SIDE_TYPE_GATHER_ACCESS_DIRECT, side_attr_list(side_attr("std.integer.base", side_attr_u8(10)))), | |
1393 | side_field_gather_signed_integer("i", offsetof(struct test, i), | |
1394 | side_struct_field_sizeof(struct test, i), 33, 20, | |
1395 | SIDE_TYPE_GATHER_ACCESS_DIRECT, side_attr_list(side_attr("std.integer.base", side_attr_u8(10)))), | |
1396 | side_field_gather_signed_integer("j", offsetof(struct test, j), | |
1397 | side_struct_field_sizeof(struct test, j), 63, 1, | |
1398 | SIDE_TYPE_GATHER_ACCESS_DIRECT, side_attr_list(side_attr("std.integer.base", side_attr_u8(10)))), | |
1399 | side_field_gather_signed_integer("k", offsetof(struct test, k), | |
1400 | side_struct_field_sizeof(struct test, k), 1, 63, | |
1401 | SIDE_TYPE_GATHER_ACCESS_DIRECT, side_attr_list(side_attr("std.integer.base", side_attr_u8(10)))), | |
1402 | side_field_gather_unsigned_integer_le("test", offsetof(struct test, test), | |
1403 | side_struct_field_sizeof(struct test, test), 0, 64, | |
1404 | SIDE_TYPE_GATHER_ACCESS_DIRECT, side_attr_list(side_attr("std.integer.base", side_attr_u8(16)))), | |
1405 | side_field_gather_unsigned_integer_le("test_le", offsetof(struct test, test), | |
1406 | side_struct_field_sizeof(struct test, test), 0, 64, | |
1407 | SIDE_TYPE_GATHER_ACCESS_DIRECT, side_attr_list(side_attr("std.integer.base", side_attr_u8(16)))), | |
1408 | side_field_gather_unsigned_integer_be("test_be", offsetof(struct test, test), | |
1409 | side_struct_field_sizeof(struct test, test), 0, 64, | |
1410 | SIDE_TYPE_GATHER_ACCESS_DIRECT, side_attr_list(side_attr("std.integer.base", side_attr_u8(16)))), | |
a82ffcff | 1411 | ) |
7a1cb105 MD |
1412 | ); |
1413 | ||
67337c4a MD |
1414 | side_static_event(my_provider_event_structgather, "myprovider", "myeventstructgather", SIDE_LOGLEVEL_DEBUG, |
1415 | side_field_list( | |
1416 | side_field_gather_struct("structgather", &mystructgatherdef, 0, sizeof(struct test), | |
1417 | SIDE_TYPE_GATHER_ACCESS_DIRECT), | |
1418 | side_field_gather_signed_integer("intgather", 0, sizeof(int32_t), 0, 0, SIDE_TYPE_GATHER_ACCESS_DIRECT, | |
1419 | side_attr_list(side_attr("std.integer.base", side_attr_u8(10)))), | |
13d97eca | 1420 | #if __HAVE_FLOAT32 |
a82ffcff | 1421 | side_field_gather_float("f32", 0, sizeof(_Float32), SIDE_TYPE_GATHER_ACCESS_DIRECT), |
13d97eca | 1422 | #endif |
a82ffcff | 1423 | ) |
7a1cb105 MD |
1424 | ); |
1425 | ||
1426 | static | |
d41cb7ee | 1427 | void test_struct_gather(void) |
7a1cb105 | 1428 | { |
67337c4a | 1429 | side_event_cond(my_provider_event_structgather) { |
7a1cb105 MD |
1430 | struct test mystruct = { |
1431 | .a = 55, | |
1432 | .b = 123, | |
1433 | .c = 2, | |
1434 | .d = -55, | |
1435 | .e = 0xABCD, | |
bc0b21eb MD |
1436 | .f = -1, |
1437 | .g = -1, | |
1438 | .h = -1, | |
1439 | .i = -1, | |
1440 | .j = -1, | |
1441 | .k = -1, | |
c1723f3c | 1442 | .test = 0xFF, |
7a1cb105 | 1443 | }; |
33956c71 | 1444 | int32_t val = -66; |
13d97eca MD |
1445 | #if __HAVE_FLOAT32 |
1446 | _Float32 f32 = 1.1; | |
1447 | #endif | |
67337c4a MD |
1448 | side_event_call(my_provider_event_structgather, |
1449 | side_arg_list( | |
1450 | side_arg_gather_struct(&mystruct), | |
1451 | side_arg_gather_integer(&val), | |
13d97eca | 1452 | #if __HAVE_FLOAT32 |
67337c4a | 1453 | side_arg_gather_float(&f32), |
13d97eca | 1454 | #endif |
33956c71 MD |
1455 | ) |
1456 | ); | |
7a1cb105 MD |
1457 | } |
1458 | } | |
1459 | ||
7394a8b8 MD |
1460 | struct testnest2 { |
1461 | uint8_t c; | |
1462 | }; | |
1463 | ||
1464 | struct testnest1 { | |
1465 | uint64_t b; | |
1466 | struct testnest2 *nest; | |
1467 | }; | |
1468 | ||
1469 | struct testnest0 { | |
1470 | uint32_t a; | |
1471 | struct testnest1 *nest; | |
1472 | }; | |
1473 | ||
67337c4a MD |
1474 | static side_define_struct(mystructgathernest2, |
1475 | side_field_list( | |
1476 | side_field_gather_unsigned_integer("c", offsetof(struct testnest2, c), | |
1477 | side_struct_field_sizeof(struct testnest2, c), 0, 0, | |
a82ffcff MD |
1478 | SIDE_TYPE_GATHER_ACCESS_DIRECT), |
1479 | ) | |
7394a8b8 MD |
1480 | ); |
1481 | ||
67337c4a MD |
1482 | static side_define_struct(mystructgathernest1, |
1483 | side_field_list( | |
1484 | side_field_gather_unsigned_integer("b", offsetof(struct testnest1, b), | |
1485 | side_struct_field_sizeof(struct testnest1, b), 0, 0, | |
a82ffcff | 1486 | SIDE_TYPE_GATHER_ACCESS_DIRECT), |
67337c4a | 1487 | side_field_gather_struct("nest2", &mystructgathernest2, |
dd7947bf | 1488 | offsetof(struct testnest1, nest), sizeof(struct testnest2), |
67337c4a | 1489 | SIDE_TYPE_GATHER_ACCESS_POINTER), |
a82ffcff | 1490 | ) |
7394a8b8 MD |
1491 | ); |
1492 | ||
67337c4a MD |
1493 | static side_define_struct(mystructgathernest0, |
1494 | side_field_list( | |
1495 | side_field_gather_unsigned_integer("a", offsetof(struct testnest0, a), | |
1496 | side_struct_field_sizeof(struct testnest0, a), 0, 0, | |
a82ffcff | 1497 | SIDE_TYPE_GATHER_ACCESS_DIRECT), |
67337c4a | 1498 | side_field_gather_struct("nest1", &mystructgathernest1, |
dd7947bf | 1499 | offsetof(struct testnest0, nest), sizeof(struct testnest1), |
67337c4a | 1500 | SIDE_TYPE_GATHER_ACCESS_POINTER), |
a82ffcff | 1501 | ) |
7394a8b8 MD |
1502 | ); |
1503 | ||
67337c4a MD |
1504 | side_static_event(my_provider_event_structgather_nest, |
1505 | "myprovider", "myeventstructgathernest", SIDE_LOGLEVEL_DEBUG, | |
1506 | side_field_list( | |
1507 | side_field_gather_struct("nest0", &mystructgathernest0, 0, | |
1508 | sizeof(struct testnest0), SIDE_TYPE_GATHER_ACCESS_DIRECT), | |
a82ffcff | 1509 | ) |
7394a8b8 MD |
1510 | ); |
1511 | ||
1512 | static | |
d41cb7ee | 1513 | void test_struct_gather_nest_ptr(void) |
7394a8b8 | 1514 | { |
67337c4a | 1515 | side_event_cond(my_provider_event_structgather_nest) { |
7394a8b8 MD |
1516 | struct testnest2 mystruct2 = { |
1517 | .c = 77, | |
1518 | }; | |
1519 | struct testnest1 mystruct1 = { | |
1520 | .b = 66, | |
1521 | .nest = &mystruct2, | |
1522 | }; | |
1523 | struct testnest0 mystruct = { | |
1524 | .a = 55, | |
1525 | .nest = &mystruct1, | |
1526 | }; | |
67337c4a MD |
1527 | side_event_call(my_provider_event_structgather_nest, |
1528 | side_arg_list( | |
1529 | side_arg_gather_struct(&mystruct), | |
7394a8b8 MD |
1530 | ) |
1531 | ); | |
1532 | } | |
1533 | } | |
1534 | ||
905f68e3 MD |
1535 | struct testfloat { |
1536 | #if __HAVE_FLOAT16 | |
1537 | _Float16 f16; | |
1538 | #endif | |
1539 | #if __HAVE_FLOAT32 | |
1540 | _Float32 f32; | |
1541 | #endif | |
1542 | #if __HAVE_FLOAT64 | |
1543 | _Float64 f64; | |
1544 | #endif | |
1545 | #if __HAVE_FLOAT128 | |
1546 | _Float128 f128; | |
1547 | #endif | |
1548 | }; | |
1549 | ||
67337c4a MD |
1550 | static side_define_struct(mystructgatherfloat, |
1551 | side_field_list( | |
905f68e3 | 1552 | #if __HAVE_FLOAT16 |
67337c4a | 1553 | side_field_gather_float("f16", offsetof(struct testfloat, f16), side_struct_field_sizeof(struct testfloat, f16), |
a82ffcff | 1554 | SIDE_TYPE_GATHER_ACCESS_DIRECT), |
905f68e3 MD |
1555 | #endif |
1556 | #if __HAVE_FLOAT32 | |
67337c4a | 1557 | side_field_gather_float("f32", offsetof(struct testfloat, f32), side_struct_field_sizeof(struct testfloat, f32), |
a82ffcff | 1558 | SIDE_TYPE_GATHER_ACCESS_DIRECT), |
905f68e3 MD |
1559 | #endif |
1560 | #if __HAVE_FLOAT64 | |
67337c4a | 1561 | side_field_gather_float("f64", offsetof(struct testfloat, f64), side_struct_field_sizeof(struct testfloat, f64), |
a82ffcff | 1562 | SIDE_TYPE_GATHER_ACCESS_DIRECT), |
905f68e3 MD |
1563 | #endif |
1564 | #if __HAVE_FLOAT128 | |
67337c4a | 1565 | side_field_gather_float("f128", offsetof(struct testfloat, f128), side_struct_field_sizeof(struct testfloat, f128), |
a82ffcff | 1566 | SIDE_TYPE_GATHER_ACCESS_DIRECT), |
905f68e3 | 1567 | #endif |
a82ffcff | 1568 | ) |
905f68e3 MD |
1569 | ); |
1570 | ||
67337c4a MD |
1571 | side_static_event(my_provider_event_structgatherfloat, |
1572 | "myprovider", "myeventstructgatherfloat", SIDE_LOGLEVEL_DEBUG, | |
1573 | side_field_list( | |
1574 | side_field_gather_struct("structgatherfloat", &mystructgatherfloat, 0, | |
1575 | sizeof(struct testfloat), SIDE_TYPE_GATHER_ACCESS_DIRECT), | |
a82ffcff | 1576 | ) |
905f68e3 MD |
1577 | ); |
1578 | ||
1579 | static | |
d41cb7ee | 1580 | void test_struct_gather_float(void) |
905f68e3 | 1581 | { |
67337c4a | 1582 | side_event_cond(my_provider_event_structgatherfloat) { |
905f68e3 MD |
1583 | struct testfloat mystruct = { |
1584 | #if __HAVE_FLOAT16 | |
1585 | .f16 = 1.1, | |
1586 | #endif | |
1587 | #if __HAVE_FLOAT32 | |
1588 | .f32 = 2.2, | |
1589 | #endif | |
1590 | #if __HAVE_FLOAT64 | |
1591 | .f64 = 3.3, | |
1592 | #endif | |
1593 | #if __HAVE_FLOAT128 | |
1594 | .f128 = 4.4, | |
1595 | #endif | |
1596 | }; | |
67337c4a MD |
1597 | side_event_call(my_provider_event_structgatherfloat, |
1598 | side_arg_list( | |
1599 | side_arg_gather_struct(&mystruct), | |
905f68e3 MD |
1600 | ) |
1601 | ); | |
1602 | } | |
1603 | } | |
1604 | ||
d41cb7ee | 1605 | uint32_t mygatherarray[] = { 1, 2, 3, 4, 5 }; |
d9359cfa | 1606 | |
d41cb7ee | 1607 | uint16_t mygatherarray2[] = { 6, 7, 8, 9 }; |
d9359cfa MD |
1608 | |
1609 | struct testarray { | |
1610 | int a; | |
1611 | uint32_t *ptr; | |
1612 | }; | |
1613 | ||
67337c4a MD |
1614 | static side_define_struct(mystructgatherarray, |
1615 | side_field_list( | |
1616 | side_field_gather_array("array", | |
a82ffcff | 1617 | side_elem(side_type_gather_unsigned_integer(0, sizeof(uint32_t), 0, 0, SIDE_TYPE_GATHER_ACCESS_DIRECT)), |
67337c4a | 1618 | SIDE_ARRAY_SIZE(mygatherarray), |
d9359cfa | 1619 | offsetof(struct testarray, ptr), |
a82ffcff MD |
1620 | SIDE_TYPE_GATHER_ACCESS_POINTER |
1621 | ), | |
1622 | ) | |
d9359cfa MD |
1623 | ); |
1624 | ||
67337c4a MD |
1625 | side_static_event(my_provider_event_structgatherarray, |
1626 | "myprovider", "myeventstructgatherarray", SIDE_LOGLEVEL_DEBUG, | |
1627 | side_field_list( | |
1628 | side_field_gather_struct("structgatherarray", &mystructgatherarray, 0, | |
1629 | sizeof(struct testarray), SIDE_TYPE_GATHER_ACCESS_DIRECT), | |
1630 | side_field_gather_array("array2", | |
a82ffcff | 1631 | side_elem(side_type_gather_unsigned_integer(0, sizeof(uint16_t), 0, 0, SIDE_TYPE_GATHER_ACCESS_DIRECT)), |
67337c4a | 1632 | SIDE_ARRAY_SIZE(mygatherarray2), 0, |
a82ffcff | 1633 | SIDE_TYPE_GATHER_ACCESS_DIRECT |
d9359cfa | 1634 | ), |
a82ffcff | 1635 | ) |
d9359cfa MD |
1636 | ); |
1637 | ||
1638 | static | |
d41cb7ee | 1639 | void test_array_gather(void) |
d9359cfa | 1640 | { |
67337c4a | 1641 | side_event_cond(my_provider_event_structgatherarray) { |
d9359cfa MD |
1642 | struct testarray mystruct = { |
1643 | .a = 55, | |
d41cb7ee | 1644 | .ptr = mygatherarray, |
d9359cfa | 1645 | }; |
67337c4a MD |
1646 | side_event_call(my_provider_event_structgatherarray, |
1647 | side_arg_list( | |
1648 | side_arg_gather_struct(&mystruct), | |
1649 | side_arg_gather_array(&mygatherarray2), | |
d9359cfa MD |
1650 | ) |
1651 | ); | |
1652 | } | |
1653 | } | |
1654 | ||
dd7947bf | 1655 | #define TESTSGNESTARRAY_LEN 4 |
d41cb7ee | 1656 | struct testgatherstructnest1 { |
dd7947bf MD |
1657 | int b; |
1658 | int c[TESTSGNESTARRAY_LEN]; | |
1659 | }; | |
1660 | ||
d41cb7ee MD |
1661 | struct testgatherstructnest0 { |
1662 | struct testgatherstructnest1 nest; | |
1663 | struct testgatherstructnest1 nestarray[2]; | |
dd7947bf MD |
1664 | int a; |
1665 | }; | |
1666 | ||
67337c4a MD |
1667 | static side_define_struct(mystructgatherstructnest1, |
1668 | side_field_list( | |
1669 | side_field_gather_signed_integer("b", offsetof(struct testgatherstructnest1, b), | |
1670 | side_struct_field_sizeof(struct testgatherstructnest1, b), 0, 0, | |
a82ffcff | 1671 | SIDE_TYPE_GATHER_ACCESS_DIRECT), |
67337c4a MD |
1672 | side_field_gather_array("c", |
1673 | side_elem( | |
1674 | side_type_gather_signed_integer(0, sizeof(uint32_t), 0, 0, | |
a82ffcff | 1675 | SIDE_TYPE_GATHER_ACCESS_DIRECT) |
dd7947bf MD |
1676 | ), |
1677 | TESTSGNESTARRAY_LEN, | |
d41cb7ee | 1678 | offsetof(struct testgatherstructnest1, c), |
a82ffcff MD |
1679 | SIDE_TYPE_GATHER_ACCESS_DIRECT), |
1680 | ) | |
dd7947bf MD |
1681 | ); |
1682 | ||
67337c4a MD |
1683 | static side_define_struct(mystructgatherstructnest0, |
1684 | side_field_list( | |
1685 | side_field_gather_signed_integer("a", offsetof(struct testgatherstructnest0, a), | |
1686 | side_struct_field_sizeof(struct testgatherstructnest0, a), 0, 0, | |
a82ffcff | 1687 | SIDE_TYPE_GATHER_ACCESS_DIRECT), |
67337c4a | 1688 | side_field_gather_struct("structnest0", &mystructgatherstructnest1, |
d41cb7ee MD |
1689 | offsetof(struct testgatherstructnest0, nest), |
1690 | sizeof(struct testgatherstructnest1), | |
67337c4a MD |
1691 | SIDE_TYPE_GATHER_ACCESS_DIRECT), |
1692 | side_field_gather_array("nestarray", | |
1693 | side_elem( | |
1694 | side_type_gather_struct(&mystructgatherstructnest1, | |
dd7947bf | 1695 | 0, |
d41cb7ee | 1696 | sizeof(struct testgatherstructnest1), |
a82ffcff | 1697 | SIDE_TYPE_GATHER_ACCESS_DIRECT) |
dd7947bf MD |
1698 | ), |
1699 | 2, | |
d41cb7ee | 1700 | offsetof(struct testgatherstructnest0, nestarray), |
a82ffcff MD |
1701 | SIDE_TYPE_GATHER_ACCESS_DIRECT), |
1702 | ) | |
dd7947bf MD |
1703 | ); |
1704 | ||
67337c4a MD |
1705 | side_static_event(my_provider_event_gatherstructnest, |
1706 | "myprovider", "myeventgatherstructnest", SIDE_LOGLEVEL_DEBUG, | |
1707 | side_field_list( | |
1708 | side_field_gather_struct("structgather", &mystructgatherstructnest0, 0, | |
1709 | sizeof(struct testgatherstructnest0), SIDE_TYPE_GATHER_ACCESS_DIRECT), | |
a82ffcff | 1710 | ) |
dd7947bf MD |
1711 | ); |
1712 | ||
1713 | static | |
d41cb7ee | 1714 | void test_gather_structnest(void) |
dd7947bf | 1715 | { |
67337c4a | 1716 | side_event_cond(my_provider_event_gatherstructnest) { |
d41cb7ee | 1717 | struct testgatherstructnest0 mystruct = { |
dd7947bf MD |
1718 | .nest = { |
1719 | .b = 66, | |
1720 | .c = { 0, 1, 2, 3 }, | |
1721 | }, | |
1722 | .nestarray = { | |
1723 | [0] = { | |
1724 | .b = 77, | |
1725 | .c = { 11, 12, 13, 14 }, | |
1726 | }, | |
1727 | [1] = { | |
1728 | .b = 88, | |
1729 | .c = { 15, 16, 17, 18 }, | |
1730 | }, | |
1731 | }, | |
1732 | .a = 55, | |
1733 | }; | |
67337c4a MD |
1734 | side_event_call(my_provider_event_gatherstructnest, |
1735 | side_arg_list( | |
1736 | side_arg_gather_struct(&mystruct), | |
dd7947bf MD |
1737 | ) |
1738 | ); | |
1739 | } | |
1740 | } | |
1741 | ||
d41cb7ee | 1742 | uint32_t gathervla[] = { 1, 2, 3, 4 }; |
80429681 | 1743 | uint32_t gathervla2[] = { 5, 6, 7, 8, 9 }; |
65b8734a | 1744 | |
d41cb7ee | 1745 | struct testgathervla { |
65b8734a MD |
1746 | int a; |
1747 | uint16_t len; | |
1748 | uint32_t *p; | |
1749 | }; | |
1750 | ||
67337c4a MD |
1751 | static side_define_struct(mystructgathervla, |
1752 | side_field_list( | |
1753 | side_field_gather_signed_integer("a", offsetof(struct testgathervla, a), | |
1754 | side_struct_field_sizeof(struct testgathervla, a), 0, 0, | |
a82ffcff | 1755 | SIDE_TYPE_GATHER_ACCESS_DIRECT |
65b8734a | 1756 | ), |
67337c4a | 1757 | side_field_gather_vla("nestvla", |
a82ffcff | 1758 | side_elem(side_type_gather_unsigned_integer(0, sizeof(uint32_t), 0, 0, SIDE_TYPE_GATHER_ACCESS_DIRECT)), |
d41cb7ee | 1759 | offsetof(struct testgathervla, p), |
67337c4a MD |
1760 | SIDE_TYPE_GATHER_ACCESS_POINTER, |
1761 | side_length(side_type_gather_unsigned_integer(offsetof(struct testgathervla, len), | |
a82ffcff | 1762 | sizeof(uint16_t), 0, 0, SIDE_TYPE_GATHER_ACCESS_DIRECT)) |
65b8734a | 1763 | ), |
a82ffcff | 1764 | ) |
65b8734a MD |
1765 | ); |
1766 | ||
67337c4a MD |
1767 | side_static_event(my_provider_event_gathervla, |
1768 | "myprovider", "myeventgathervla", SIDE_LOGLEVEL_DEBUG, | |
1769 | side_field_list( | |
1770 | side_field_gather_struct("structgathervla", &mystructgathervla, 0, | |
1771 | sizeof(struct testgathervla), SIDE_TYPE_GATHER_ACCESS_DIRECT), | |
1772 | side_field_gather_vla("vla", | |
a82ffcff | 1773 | side_elem(side_type_gather_unsigned_integer(0, sizeof(uint32_t), 0, 0, SIDE_TYPE_GATHER_ACCESS_DIRECT)), |
67337c4a | 1774 | 0, SIDE_TYPE_GATHER_ACCESS_DIRECT, |
a82ffcff | 1775 | side_length(side_type_gather_unsigned_integer(0, sizeof(uint16_t), 0, 0, SIDE_TYPE_GATHER_ACCESS_DIRECT)) |
80429681 | 1776 | ), |
a82ffcff | 1777 | ) |
65b8734a MD |
1778 | ); |
1779 | ||
1780 | static | |
d41cb7ee | 1781 | void test_gather_vla(void) |
65b8734a | 1782 | { |
67337c4a | 1783 | side_event_cond(my_provider_event_gathervla) { |
d41cb7ee | 1784 | struct testgathervla mystruct = { |
65b8734a | 1785 | .a = 55, |
67337c4a | 1786 | .len = SIDE_ARRAY_SIZE(gathervla), |
d41cb7ee | 1787 | .p = gathervla, |
65b8734a | 1788 | }; |
80429681 | 1789 | uint16_t vla2_len = 5; |
67337c4a MD |
1790 | side_event_call(my_provider_event_gathervla, |
1791 | side_arg_list( | |
1792 | side_arg_gather_struct(&mystruct), | |
1793 | side_arg_gather_vla(gathervla2, &vla2_len), | |
65b8734a MD |
1794 | ) |
1795 | ); | |
1796 | } | |
1797 | } | |
1798 | ||
d41cb7ee | 1799 | struct testgathervlaflex { |
65b8734a MD |
1800 | uint8_t len; |
1801 | uint32_t otherfield; | |
1802 | uint64_t array[]; | |
1803 | }; | |
1804 | ||
67337c4a MD |
1805 | static side_define_struct(mystructgathervlaflex, |
1806 | side_field_list( | |
1807 | side_field_gather_vla("vlaflex", | |
a82ffcff | 1808 | side_elem(side_type_gather_unsigned_integer(0, sizeof(uint64_t), 0, 0, SIDE_TYPE_GATHER_ACCESS_DIRECT)), |
d41cb7ee | 1809 | offsetof(struct testgathervlaflex, array), |
67337c4a MD |
1810 | SIDE_TYPE_GATHER_ACCESS_DIRECT, |
1811 | side_length(side_type_gather_unsigned_integer(offsetof(struct testgathervlaflex, len), | |
a82ffcff | 1812 | side_struct_field_sizeof(struct testgathervlaflex, len), 0, 0, SIDE_TYPE_GATHER_ACCESS_DIRECT)) |
65b8734a | 1813 | ), |
a82ffcff | 1814 | ) |
65b8734a MD |
1815 | ); |
1816 | ||
67337c4a MD |
1817 | side_static_event(my_provider_event_gathervlaflex, |
1818 | "myprovider", "myeventgathervlaflex", SIDE_LOGLEVEL_DEBUG, | |
1819 | side_field_list( | |
1820 | side_field_gather_struct("structgathervlaflex", &mystructgathervlaflex, 0, | |
a82ffcff MD |
1821 | sizeof(struct testgathervlaflex), SIDE_TYPE_GATHER_ACCESS_DIRECT) |
1822 | ) | |
65b8734a MD |
1823 | ); |
1824 | ||
1825 | #define VLAFLEXLEN 6 | |
1826 | static | |
d41cb7ee | 1827 | void test_gather_vla_flex(void) |
65b8734a | 1828 | { |
67337c4a | 1829 | side_event_cond(my_provider_event_gathervlaflex) { |
358281a1 | 1830 | struct testgathervlaflex *mystruct = |
150b5c1d | 1831 | (struct testgathervlaflex *) malloc(sizeof(*mystruct) + VLAFLEXLEN * sizeof(uint64_t)); |
65b8734a MD |
1832 | |
1833 | mystruct->len = VLAFLEXLEN; | |
1834 | mystruct->otherfield = 0; | |
1835 | mystruct->array[0] = 1; | |
1836 | mystruct->array[1] = 2; | |
1837 | mystruct->array[2] = 3; | |
1838 | mystruct->array[3] = 4; | |
1839 | mystruct->array[4] = 5; | |
1840 | mystruct->array[5] = 6; | |
67337c4a MD |
1841 | side_event_call(my_provider_event_gathervlaflex, |
1842 | side_arg_list( | |
1843 | side_arg_gather_struct(mystruct), | |
65b8734a MD |
1844 | ) |
1845 | ); | |
1846 | free(mystruct); | |
1847 | } | |
1848 | } | |
1849 | ||
67337c4a MD |
1850 | side_static_event(my_provider_event_gatherbyte, |
1851 | "myprovider", "myeventgatherbyte", SIDE_LOGLEVEL_DEBUG, | |
1852 | side_field_list( | |
a82ffcff | 1853 | side_field_gather_byte("byte", 0, SIDE_TYPE_GATHER_ACCESS_DIRECT), |
67337c4a | 1854 | side_field_gather_array("array", |
a82ffcff MD |
1855 | side_elem(side_type_gather_byte(0, SIDE_TYPE_GATHER_ACCESS_DIRECT)), |
1856 | 3, 0, SIDE_TYPE_GATHER_ACCESS_DIRECT | |
d69918cc | 1857 | ), |
a82ffcff | 1858 | ) |
d69918cc MD |
1859 | ); |
1860 | ||
1861 | static | |
1862 | void test_gather_byte(void) | |
1863 | { | |
67337c4a | 1864 | side_event_cond(my_provider_event_gatherbyte) { |
d69918cc MD |
1865 | uint8_t v = 0x44; |
1866 | uint8_t array[3] = { 0x1, 0x2, 0x3 }; | |
1867 | ||
67337c4a MD |
1868 | side_event_call(my_provider_event_gatherbyte, |
1869 | side_arg_list( | |
1870 | side_arg_gather_byte(&v), | |
1871 | side_arg_gather_array(array), | |
d69918cc MD |
1872 | ) |
1873 | ); | |
1874 | } | |
1875 | } | |
1876 | ||
8ad2f385 MD |
1877 | #define ARRAYBOOLLEN 4 |
1878 | static bool arraybool[ARRAYBOOLLEN] = { false, true, false, true }; | |
1879 | ||
67337c4a MD |
1880 | side_static_event(my_provider_event_gatherbool, |
1881 | "myprovider", "myeventgatherbool", SIDE_LOGLEVEL_DEBUG, | |
1882 | side_field_list( | |
1883 | side_field_gather_bool("v1_true", 0, sizeof(bool), 0, 0, | |
a82ffcff | 1884 | SIDE_TYPE_GATHER_ACCESS_DIRECT), |
67337c4a | 1885 | side_field_gather_bool("v2_false", 0, sizeof(bool), 0, 0, |
a82ffcff | 1886 | SIDE_TYPE_GATHER_ACCESS_DIRECT), |
67337c4a | 1887 | side_field_gather_bool("v3_true", 0, sizeof(uint16_t), 1, 1, |
a82ffcff | 1888 | SIDE_TYPE_GATHER_ACCESS_DIRECT), |
67337c4a | 1889 | side_field_gather_bool("v4_false", 0, sizeof(uint16_t), 1, 1, |
a82ffcff | 1890 | SIDE_TYPE_GATHER_ACCESS_DIRECT), |
67337c4a MD |
1891 | side_field_gather_array("arraybool", |
1892 | side_elem(side_type_gather_bool(0, sizeof(bool), 0, 0, | |
a82ffcff MD |
1893 | SIDE_TYPE_GATHER_ACCESS_DIRECT)), |
1894 | ARRAYBOOLLEN, 0, SIDE_TYPE_GATHER_ACCESS_DIRECT | |
8ad2f385 | 1895 | ), |
a82ffcff | 1896 | ) |
8ad2f385 MD |
1897 | ); |
1898 | ||
1899 | static | |
1900 | void test_gather_bool(void) | |
1901 | { | |
67337c4a | 1902 | side_event_cond(my_provider_event_structgatherarray) { |
8ad2f385 MD |
1903 | bool v1 = true; |
1904 | bool v2 = false; | |
1905 | uint16_t v3 = 1U << 1; | |
1906 | uint16_t v4 = 1U << 2; | |
1907 | ||
67337c4a MD |
1908 | side_event_call(my_provider_event_gatherbool, |
1909 | side_arg_list( | |
1910 | side_arg_gather_bool(&v1), | |
1911 | side_arg_gather_bool(&v2), | |
1912 | side_arg_gather_bool(&v3), | |
1913 | side_arg_gather_bool(&v4), | |
1914 | side_arg_gather_array(arraybool), | |
8ad2f385 MD |
1915 | ) |
1916 | ); | |
1917 | } | |
1918 | } | |
1919 | ||
67337c4a MD |
1920 | side_static_event(my_provider_event_gatherpointer, |
1921 | "myprovider", "myeventgatherpointer", SIDE_LOGLEVEL_DEBUG, | |
1922 | side_field_list( | |
a82ffcff | 1923 | side_field_gather_pointer("ptr", 0, SIDE_TYPE_GATHER_ACCESS_DIRECT), |
67337c4a | 1924 | side_field_gather_array("array", |
a82ffcff MD |
1925 | side_elem(side_type_gather_pointer(0, SIDE_TYPE_GATHER_ACCESS_DIRECT)), |
1926 | 3, 0, SIDE_TYPE_GATHER_ACCESS_DIRECT | |
4e1b0e0e | 1927 | ), |
a82ffcff | 1928 | ) |
4e1b0e0e MD |
1929 | ); |
1930 | ||
1931 | static | |
1932 | void test_gather_pointer(void) | |
1933 | { | |
67337c4a | 1934 | side_event_cond(my_provider_event_structgatherarray) { |
4e1b0e0e MD |
1935 | void *v = (void *)0x44; |
1936 | void *array[3] = { (void *)0x1, (void *)0x2, (void *)0x3 }; | |
1937 | ||
67337c4a MD |
1938 | side_event_call(my_provider_event_gatherpointer, |
1939 | side_arg_list( | |
1940 | side_arg_gather_pointer(&v), | |
1941 | side_arg_gather_array(array), | |
4e1b0e0e MD |
1942 | ) |
1943 | ); | |
1944 | } | |
1945 | } | |
0519cb86 | 1946 | |
67337c4a MD |
1947 | static side_define_enum(myenumgather, |
1948 | side_enum_mapping_list( | |
1949 | side_enum_mapping_range("one-ten", 1, 10), | |
1950 | side_enum_mapping_range("100-200", 100, 200), | |
1951 | side_enum_mapping_value("200", 200), | |
1952 | side_enum_mapping_value("300", 300), | |
a82ffcff | 1953 | ) |
0519cb86 MD |
1954 | ); |
1955 | ||
67337c4a MD |
1956 | side_static_event(my_provider_event_enum_gather, "myprovider", "myeventenumgather", SIDE_LOGLEVEL_DEBUG, |
1957 | side_field_list( | |
1958 | side_field_gather_enum("5", &myenumgather, | |
1959 | side_elem( | |
1960 | side_type_gather_unsigned_integer(0, sizeof(uint32_t), 0, 0, | |
a82ffcff | 1961 | SIDE_TYPE_GATHER_ACCESS_DIRECT) |
0519cb86 MD |
1962 | ) |
1963 | ), | |
67337c4a MD |
1964 | side_field_gather_enum("400", &myenumgather, |
1965 | side_elem( | |
1966 | side_type_gather_unsigned_integer(0, sizeof(uint64_t), 0, 0, | |
a82ffcff | 1967 | SIDE_TYPE_GATHER_ACCESS_DIRECT) |
0519cb86 MD |
1968 | ) |
1969 | ), | |
67337c4a MD |
1970 | side_field_gather_enum("200", &myenumgather, |
1971 | side_elem( | |
1972 | side_type_gather_unsigned_integer(0, sizeof(uint8_t), 0, 0, | |
a82ffcff | 1973 | SIDE_TYPE_GATHER_ACCESS_DIRECT) |
0519cb86 MD |
1974 | ) |
1975 | ), | |
67337c4a MD |
1976 | side_field_gather_enum("-100", &myenumgather, |
1977 | side_elem( | |
1978 | side_type_gather_signed_integer(0, sizeof(int8_t), 0, 0, | |
a82ffcff | 1979 | SIDE_TYPE_GATHER_ACCESS_DIRECT) |
0519cb86 MD |
1980 | ) |
1981 | ), | |
67337c4a MD |
1982 | side_field_gather_enum("6_be", &myenumgather, |
1983 | side_elem( | |
1984 | side_type_gather_unsigned_integer_be(0, sizeof(uint32_t), 0, 0, | |
a82ffcff | 1985 | SIDE_TYPE_GATHER_ACCESS_DIRECT) |
0519cb86 MD |
1986 | ) |
1987 | ), | |
67337c4a MD |
1988 | side_field_gather_enum("6_le", &myenumgather, |
1989 | side_elem( | |
1990 | side_type_gather_unsigned_integer_le(0, sizeof(uint32_t), 0, 0, | |
a82ffcff | 1991 | SIDE_TYPE_GATHER_ACCESS_DIRECT) |
0519cb86 MD |
1992 | ) |
1993 | ), | |
a82ffcff | 1994 | ) |
0519cb86 MD |
1995 | ); |
1996 | ||
1997 | static | |
1998 | void test_gather_enum(void) | |
1999 | { | |
2000 | uint32_t v1 = 5; | |
2001 | uint64_t v2 = 400; | |
2002 | uint8_t v3 = 200; | |
2003 | int8_t v4 = -100; | |
67337c4a MD |
2004 | #if SIDE_BYTE_ORDER == SIDE_LITTLE_ENDIAN |
2005 | uint32_t v5 = side_bswap_32(6); | |
0519cb86 MD |
2006 | uint32_t v6 = 6; |
2007 | #else | |
2008 | uint32_t v5 = 6; | |
67337c4a | 2009 | uint32_t v6 = side_bswap_32(6); |
0519cb86 MD |
2010 | #endif |
2011 | ||
67337c4a MD |
2012 | side_event(my_provider_event_enum_gather, |
2013 | side_arg_list( | |
2014 | side_arg_gather_integer(&v1), | |
2015 | side_arg_gather_integer(&v2), | |
2016 | side_arg_gather_integer(&v3), | |
2017 | side_arg_gather_integer(&v4), | |
2018 | side_arg_gather_integer(&v5), | |
2019 | side_arg_gather_integer(&v6), | |
0519cb86 MD |
2020 | ) |
2021 | ); | |
2022 | } | |
2023 | ||
67337c4a MD |
2024 | side_static_event(my_provider_event_gatherstring, |
2025 | "myprovider", "myeventgatherstring", SIDE_LOGLEVEL_DEBUG, | |
2026 | side_field_list( | |
a82ffcff | 2027 | side_field_gather_string("string", 0, SIDE_TYPE_GATHER_ACCESS_DIRECT), |
67337c4a | 2028 | side_field_gather_array("arrayptr", |
a82ffcff MD |
2029 | side_elem(side_type_gather_string(0, SIDE_TYPE_GATHER_ACCESS_POINTER)), |
2030 | 3, 0, SIDE_TYPE_GATHER_ACCESS_DIRECT | |
7d34edfc | 2031 | ), |
67337c4a | 2032 | side_field_gather_array("array", |
a82ffcff MD |
2033 | side_elem(side_type_gather_string(0, SIDE_TYPE_GATHER_ACCESS_DIRECT)), |
2034 | 3, 0, SIDE_TYPE_GATHER_ACCESS_DIRECT | |
7d34edfc | 2035 | ), |
a82ffcff | 2036 | ) |
7d34edfc MD |
2037 | ); |
2038 | ||
2039 | static | |
2040 | void test_gather_string(void) | |
2041 | { | |
67337c4a | 2042 | side_event_cond(my_provider_event_gatherstring) { |
9365e936 MJ |
2043 | const char *str1 = "abcdef"; |
2044 | const char *ptrarray[3] = { | |
7d34edfc MD |
2045 | "abc", |
2046 | "def", | |
2047 | "ghi", | |
2048 | }; | |
2049 | char flatarray[] = { 'a', 'b', '\0', 'c', 'd', '\0', 'e', 'f', '\0' }; | |
2050 | ||
67337c4a MD |
2051 | side_event_call(my_provider_event_gatherstring, |
2052 | side_arg_list( | |
2053 | side_arg_gather_string(str1), | |
2054 | side_arg_gather_array(ptrarray), | |
2055 | side_arg_gather_array(flatarray), | |
7d34edfc MD |
2056 | ) |
2057 | ); | |
2058 | } | |
2059 | } | |
2060 | ||
67337c4a MD |
2061 | side_static_event(my_provider_event_str_utf, "myprovider", "myevent_str_utf", SIDE_LOGLEVEL_DEBUG, |
2062 | side_field_list( | |
a82ffcff MD |
2063 | side_field_string("utf8"), |
2064 | side_field_string32("utf32"), | |
2065 | side_field_string16("utf16"), | |
2066 | side_field_string32_le("utf32_le"), | |
2067 | side_field_string16_le("utf16_le"), | |
2068 | side_field_string32_be("utf32_be"), | |
2069 | side_field_string16_be("utf16_be"), | |
67337c4a | 2070 | side_field_dynamic("dynamic_utf32"), |
a82ffcff MD |
2071 | side_field_gather_string32("gather_utf32", 0, SIDE_TYPE_GATHER_ACCESS_DIRECT), |
2072 | ) | |
52990f65 MD |
2073 | ); |
2074 | ||
2075 | static | |
2076 | void test_string_utf(void) | |
2077 | { | |
2078 | /* | |
2079 | * Character '®' is: | |
2080 | * UTF-8: \c2 \ae | |
2081 | * UTF-16: U+00ae | |
2082 | * UTF-32: U+000000ae | |
2083 | */ | |
2084 | uint8_t str8[] = { 0xc2, 0xae, 'a', 'b', 'c', 0 }; | |
2085 | uint32_t str32[] = { 0x000000ae, 'a', 'b', 'c', 0 }; | |
2086 | uint16_t str16[] = { 0x00ae, 'a', 'b', 'c', 0 }; | |
67337c4a | 2087 | #if SIDE_BYTE_ORDER == SIDE_LITTLE_ENDIAN |
52990f65 MD |
2088 | uint32_t str32_le[] = { 0x000000ae, 'a', 'b', 'c', 0 }; |
2089 | uint16_t str16_le[] = { 0x00ae, 'a', 'b', 'c', 0 }; | |
67337c4a MD |
2090 | uint32_t str32_be[] = { side_bswap_32(0x000000ae), side_bswap_32('a'), side_bswap_32('b'), side_bswap_32('c'), 0 }; |
2091 | uint16_t str16_be[] = { side_bswap_16(0x00ae), side_bswap_16('a'), side_bswap_16('b'), side_bswap_16('c'), 0 }; | |
52990f65 | 2092 | #else |
67337c4a MD |
2093 | uint32_t str32_le[] = { side_bswap_32(0x000000ae), side_bswap_32('a'), side_bswap_32('b'), side_bswap_32('c'), 0 }; |
2094 | uint16_t str16_le[] = { side_bswap_16(0x00ae), side_bswap_16('a'), side_bswap_16('b'), side_bswap_16('c'), 0 }; | |
52990f65 MD |
2095 | uint32_t str32_be[] = { 0x000000ae, 'a', 'b', 'c', 0 }; |
2096 | uint16_t str16_be[] = { 0x00ae, 'a', 'b', 'c', 0 }; | |
2097 | #endif | |
2098 | ||
67337c4a MD |
2099 | side_event(my_provider_event_str_utf, |
2100 | side_arg_list( | |
2101 | side_arg_string(str8), | |
2102 | side_arg_string32(str32), | |
2103 | side_arg_string16(str16), | |
2104 | side_arg_string32(str32_le), | |
2105 | side_arg_string16(str16_le), | |
2106 | side_arg_string32(str32_be), | |
2107 | side_arg_string16(str16_be), | |
a82ffcff | 2108 | side_arg_dynamic_string32(str32), |
67337c4a | 2109 | side_arg_gather_string(str32), |
52990f65 MD |
2110 | ) |
2111 | ); | |
2112 | } | |
2113 | ||
5530345d | 2114 | static side_define_variant(myvariantdef, |
a82ffcff | 2115 | side_type_u32(), |
5530345d | 2116 | side_option_list( |
a82ffcff MD |
2117 | side_option_range(1, 3, side_type_u16()), |
2118 | side_option(5, side_type_string()), | |
2119 | ) | |
5530345d MD |
2120 | ); |
2121 | ||
2122 | side_static_event(my_provider_event_variant, "myprovider", "myeventvariant", SIDE_LOGLEVEL_DEBUG, | |
2123 | side_field_list( | |
2124 | side_field_variant("variant1", &myvariantdef), | |
2125 | side_field_variant("variant2", &myvariantdef), | |
a82ffcff MD |
2126 | side_field_u8("z"), |
2127 | ) | |
5530345d MD |
2128 | ); |
2129 | ||
2130 | static | |
2131 | void test_variant(void) | |
2132 | { | |
2133 | side_event_cond(my_provider_event_variant) { | |
2134 | side_arg_define_variant(myvariant1, side_arg_u32(2), side_arg_u16(4)); | |
2135 | side_arg_define_variant(myvariant2, side_arg_u32(5), side_arg_string("abc")); | |
2136 | ||
2137 | side_event_call(my_provider_event_variant, | |
2138 | side_arg_list( | |
2139 | side_arg_variant(&myvariant1), | |
2140 | side_arg_variant(&myvariant2), | |
2141 | side_arg_u8(55), | |
2142 | ) | |
2143 | ); | |
2144 | } | |
2145 | } | |
2146 | ||
f611d0c3 MD |
2147 | int main() |
2148 | { | |
2149 | test_fields(); | |
89747802 MD |
2150 | test_event_hidden(); |
2151 | test_event_export(); | |
c7a14585 | 2152 | test_struct_literal(); |
f611d0c3 MD |
2153 | test_struct(); |
2154 | test_array(); | |
2155 | test_vla(); | |
2156 | test_vla_visitor(); | |
cdd6e858 | 2157 | test_vla_visitor_2d(); |
a2e2357e MD |
2158 | test_dynamic_basic_type(); |
2159 | test_dynamic_vla(); | |
465e5e7e | 2160 | test_dynamic_null(); |
c208889e MD |
2161 | test_dynamic_struct(); |
2162 | test_dynamic_nested_struct(); | |
2163 | test_dynamic_vla_struct(); | |
2164 | test_dynamic_struct_vla(); | |
948e3e72 | 2165 | test_dynamic_nested_vla(); |
19fa6aa2 | 2166 | test_variadic(); |
41c4d119 | 2167 | test_static_variadic(); |
4f40d951 MD |
2168 | test_bool(); |
2169 | test_dynamic_bool(); | |
8ceca0cd | 2170 | test_dynamic_vla_with_visitor(); |
2b359235 | 2171 | test_dynamic_struct_with_visitor(); |
65010f43 | 2172 | test_event_user_attribute(); |
a848763d | 2173 | test_field_user_attribute(); |
808bd9bf MD |
2174 | test_variadic_attr(); |
2175 | test_variadic_vla_attr(); | |
2176 | test_variadic_struct_attr(); | |
fb25b355 MD |
2177 | test_float(); |
2178 | test_variadic_float(); | |
79f677ba | 2179 | test_enum(); |
ea32e5fc | 2180 | test_enum_bitmap(); |
7aec0d09 | 2181 | test_blob(); |
71aa8975 | 2182 | test_fmt_string(); |
8bdd5c12 | 2183 | test_endian(); |
1d9c515c | 2184 | test_base(); |
d41cb7ee MD |
2185 | test_struct_gather(); |
2186 | test_struct_gather_nest_ptr(); | |
2187 | test_struct_gather_float(); | |
2188 | test_array_gather(); | |
2189 | test_gather_structnest(); | |
2190 | test_gather_vla(); | |
2191 | test_gather_vla_flex(); | |
d69918cc | 2192 | test_gather_byte(); |
8ad2f385 | 2193 | test_gather_bool(); |
4e1b0e0e | 2194 | test_gather_pointer(); |
0519cb86 | 2195 | test_gather_enum(); |
7d34edfc | 2196 | test_gather_string(); |
52990f65 | 2197 | test_string_utf(); |
5530345d | 2198 | test_variant(); |
f611d0c3 MD |
2199 | return 0; |
2200 | } |