Implement scatter-gather float
[libside.git] / src / test.c
CommitLineData
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
MD
12
13#include <side/trace.h>
14#include "tracer.h"
15
16/* User code example */
17
89747802 18side_static_event(my_provider_event, "myprovider", "myevent", SIDE_LOGLEVEL_DEBUG,
f611d0c3 19 side_field_list(
485b800a
MD
20 side_field_u32("abc", side_attr_list()),
21 side_field_s64("def", side_attr_list()),
f5e650d7 22 side_field_pointer("ptr", side_attr_list()),
66de373e
MD
23 side_field_dynamic("dynamic"),
24 side_field_dynamic("dynamic_pointer"),
9b641221 25 side_field_null("null", side_attr_list()),
399c836b
MD
26 ),
27 side_attr_list()
f611d0c3
MD
28);
29
30static
31void test_fields(void)
32{
33 uint32_t uw = 42;
34 int64_t sdw = -500;
35
f5e650d7
MD
36 side_event(my_provider_event,
37 side_arg_list(
38 side_arg_u32(uw),
39 side_arg_s64(sdw),
40 side_arg_pointer((void *) 0x1),
66de373e
MD
41 side_arg_dynamic_string("zzz", side_attr_list()),
42 side_arg_dynamic_pointer((void *) 0x1, side_attr_list()),
9b641221 43 side_arg_null(),
f5e650d7
MD
44 )
45 );
f611d0c3
MD
46}
47
89747802
MD
48side_hidden_event(my_provider_event_hidden, "myprovider", "myeventhidden", SIDE_LOGLEVEL_DEBUG,
49 side_field_list(
50 side_field_u32("abc", side_attr_list()),
51 ),
52 side_attr_list()
53);
54
55static
56void test_event_hidden(void)
57{
89747802
MD
58 side_event(my_provider_event_hidden, side_arg_list(side_arg_u32(2)));
59}
60
61side_declare_event(my_provider_event_export);
62
63side_export_event(my_provider_event_export, "myprovider", "myeventexport", SIDE_LOGLEVEL_DEBUG,
64 side_field_list(
65 side_field_u32("abc", side_attr_list()),
66 ),
67 side_attr_list()
68);
69
70static
71void test_event_export(void)
72{
89747802
MD
73 side_event(my_provider_event_export, side_arg_list(side_arg_u32(2)));
74}
75
76side_static_event(my_provider_event_struct_literal, "myprovider", "myeventstructliteral", SIDE_LOGLEVEL_DEBUG,
f611d0c3 77 side_field_list(
c7a14585
MD
78 side_field_struct("structliteral",
79 side_struct_literal(
80 side_field_list(
81 side_field_u32("x", side_attr_list()),
82 side_field_s64("y", side_attr_list()),
83 ),
84 side_attr_list()
85 )
f611d0c3 86 ),
485b800a 87 side_field_u8("z", side_attr_list()),
399c836b
MD
88 ),
89 side_attr_list()
f611d0c3
MD
90);
91
c7a14585
MD
92static
93void test_struct_literal(void)
94{
c7a14585
MD
95 side_event_cond(my_provider_event_struct_literal) {
96 side_arg_define_vec(mystruct, side_arg_list(side_arg_u32(21), side_arg_s64(22)));
97 side_event_call(my_provider_event_struct_literal, side_arg_list(side_arg_struct(&mystruct), side_arg_u8(55)));
98 }
99}
100
101static side_define_struct(mystructdef,
102 side_field_list(
103 side_field_u32("x", side_attr_list()),
104 side_field_s64("y", side_attr_list()),
105 ),
106 side_attr_list()
107);
108
89747802 109side_static_event(my_provider_event_struct, "myprovider", "myeventstruct", SIDE_LOGLEVEL_DEBUG,
c7a14585
MD
110 side_field_list(
111 side_field_struct("struct", &mystructdef),
112 side_field_u8("z", side_attr_list()),
113 ),
114 side_attr_list()
115);
116
f611d0c3
MD
117static
118void test_struct(void)
119{
c7a14585 120 side_event_cond(my_provider_event_struct) {
f611d0c3 121 side_arg_define_vec(mystruct, side_arg_list(side_arg_u32(21), side_arg_s64(22)));
c7a14585 122 side_event_call(my_provider_event_struct, side_arg_list(side_arg_struct(&mystruct), side_arg_u8(55)));
f611d0c3
MD
123 }
124}
125
89747802 126side_static_event(my_provider_event_array, "myprovider", "myarray", SIDE_LOGLEVEL_DEBUG,
f611d0c3 127 side_field_list(
9a55f555 128 side_field_array("arr", side_elem(side_type_u32(side_attr_list())), 3, side_attr_list()),
485b800a 129 side_field_s64("v", side_attr_list()),
399c836b
MD
130 ),
131 side_attr_list()
f611d0c3
MD
132);
133
134static
135void test_array(void)
136{
d5cdb129 137 side_event_cond(my_provider_event_array) {
f611d0c3 138 side_arg_define_vec(myarray, side_arg_list(side_arg_u32(1), side_arg_u32(2), side_arg_u32(3)));
d5cdb129 139 side_event_call(my_provider_event_array, side_arg_list(side_arg_array(&myarray), side_arg_s64(42)));
f611d0c3
MD
140 }
141}
142
89747802 143side_static_event(my_provider_event_vla, "myprovider", "myvla", SIDE_LOGLEVEL_DEBUG,
f611d0c3 144 side_field_list(
9a55f555 145 side_field_vla("vla", side_elem(side_type_u32(side_attr_list())), side_attr_list()),
485b800a 146 side_field_s64("v", side_attr_list()),
399c836b
MD
147 ),
148 side_attr_list()
f611d0c3
MD
149);
150
151static
152void test_vla(void)
153{
d5cdb129 154 side_event_cond(my_provider_event_vla) {
f611d0c3 155 side_arg_define_vec(myvla, side_arg_list(side_arg_u32(1), side_arg_u32(2), side_arg_u32(3)));
d5cdb129 156 side_event_call(my_provider_event_vla, side_arg_list(side_arg_vla(&myvla), side_arg_s64(42)));
f611d0c3
MD
157 }
158}
159
cdd6e858
MD
160/* 1D array visitor */
161
f611d0c3
MD
162struct app_visitor_ctx {
163 const uint32_t *ptr;
352a4b77 164 uint32_t length;
f611d0c3
MD
165};
166
352a4b77
MD
167static
168enum side_visitor_status test_visitor(const struct side_tracer_visitor_ctx *tracer_ctx, void *_ctx)
f611d0c3
MD
169{
170 struct app_visitor_ctx *ctx = (struct app_visitor_ctx *) _ctx;
352a4b77
MD
171 uint32_t length = ctx->length, i;
172
173 for (i = 0; i < length; i++) {
66de373e 174 const struct side_arg elem = side_arg_u32(ctx->ptr[i]);
ffb5c809 175
db6ecef9
MD
176 if (tracer_ctx->write_elem(tracer_ctx, &elem) != SIDE_VISITOR_STATUS_OK)
177 return SIDE_VISITOR_STATUS_ERROR;
352a4b77 178 }
f611d0c3
MD
179 return SIDE_VISITOR_STATUS_OK;
180}
181
182static uint32_t testarray[] = { 1, 2, 3, 4, 5, 6, 7, 8 };
183
89747802 184side_static_event(my_provider_event_vla_visitor, "myprovider", "myvlavisit", SIDE_LOGLEVEL_DEBUG,
f611d0c3 185 side_field_list(
9a55f555 186 side_field_vla_visitor("vlavisit", side_elem(side_type_u32(side_attr_list())), test_visitor, side_attr_list()),
485b800a 187 side_field_s64("v", side_attr_list()),
399c836b
MD
188 ),
189 side_attr_list()
f611d0c3
MD
190);
191
192static
193void test_vla_visitor(void)
194{
d5cdb129 195 side_event_cond(my_provider_event_vla_visitor) {
f611d0c3
MD
196 struct app_visitor_ctx ctx = {
197 .ptr = testarray,
352a4b77 198 .length = SIDE_ARRAY_SIZE(testarray),
f611d0c3 199 };
d5cdb129 200 side_event_call(my_provider_event_vla_visitor, side_arg_list(side_arg_vla_visitor(&ctx), side_arg_s64(42)));
f611d0c3
MD
201 }
202}
203
cdd6e858
MD
204/* 2D array visitor */
205
206struct app_visitor_2d_inner_ctx {
207 const uint32_t *ptr;
208 uint32_t length;
209};
210
211static
212enum side_visitor_status test_inner_visitor(const struct side_tracer_visitor_ctx *tracer_ctx, void *_ctx)
213{
214 struct app_visitor_2d_inner_ctx *ctx = (struct app_visitor_2d_inner_ctx *) _ctx;
215 uint32_t length = ctx->length, i;
216
217 for (i = 0; i < length; i++) {
66de373e 218 const struct side_arg elem = side_arg_u32(ctx->ptr[i]);
ffb5c809 219
db6ecef9
MD
220 if (tracer_ctx->write_elem(tracer_ctx, &elem) != SIDE_VISITOR_STATUS_OK)
221 return SIDE_VISITOR_STATUS_ERROR;
cdd6e858
MD
222 }
223 return SIDE_VISITOR_STATUS_OK;
224}
225
226struct app_visitor_2d_outer_ctx {
227 const uint32_t (*ptr)[2];
228 uint32_t length;
229};
230
231static
232enum side_visitor_status test_outer_visitor(const struct side_tracer_visitor_ctx *tracer_ctx, void *_ctx)
233{
234 struct app_visitor_2d_outer_ctx *ctx = (struct app_visitor_2d_outer_ctx *) _ctx;
235 uint32_t length = ctx->length, i;
236
237 for (i = 0; i < length; i++) {
238 struct app_visitor_2d_inner_ctx inner_ctx = {
239 .ptr = ctx->ptr[i],
240 .length = 2,
241 };
66de373e 242 const struct side_arg elem = side_arg_vla_visitor(&inner_ctx);
db6ecef9
MD
243 if (tracer_ctx->write_elem(tracer_ctx, &elem) != SIDE_VISITOR_STATUS_OK)
244 return SIDE_VISITOR_STATUS_ERROR;
cdd6e858
MD
245 }
246 return SIDE_VISITOR_STATUS_OK;
247}
248
249static uint32_t testarray2d[][2] = {
250 { 1, 2 },
251 { 33, 44 },
252 { 55, 66 },
253};
254
89747802 255side_static_event(my_provider_event_vla_visitor2d, "myprovider", "myvlavisit2d", SIDE_LOGLEVEL_DEBUG,
cdd6e858
MD
256 side_field_list(
257 side_field_vla_visitor("vlavisit2d",
f37a556f 258 side_elem(
32ba58fc 259 side_type_vla_visitor(
9a55f555 260 side_elem(side_type_u32(side_attr_list())),
f37a556f
MD
261 test_inner_visitor,
262 side_attr_list())
263 ), test_outer_visitor, side_attr_list()),
485b800a 264 side_field_s64("v", side_attr_list()),
399c836b
MD
265 ),
266 side_attr_list()
cdd6e858
MD
267);
268
269static
270void test_vla_visitor_2d(void)
271{
d5cdb129 272 side_event_cond(my_provider_event_vla_visitor2d) {
cdd6e858
MD
273 struct app_visitor_2d_outer_ctx ctx = {
274 .ptr = testarray2d,
275 .length = SIDE_ARRAY_SIZE(testarray2d),
276 };
d5cdb129 277 side_event_call(my_provider_event_vla_visitor2d, side_arg_list(side_arg_vla_visitor(&ctx), side_arg_s64(42)));
cdd6e858
MD
278 }
279}
280
ba845af5
MD
281static int64_t array_fixint[] = { -444, 555, 123, 2897432587 };
282
89747802 283side_static_event(my_provider_event_array_fixint, "myprovider", "myarrayfixint", SIDE_LOGLEVEL_DEBUG,
ba845af5 284 side_field_list(
9a55f555 285 side_field_array("arrfixint", side_elem(side_type_s64(side_attr_list())), SIDE_ARRAY_SIZE(array_fixint), side_attr_list()),
485b800a 286 side_field_s64("v", side_attr_list()),
399c836b
MD
287 ),
288 side_attr_list()
ba845af5
MD
289);
290
291static
292void test_array_fixint(void)
293{
d5cdb129 294 side_event(my_provider_event_array_fixint,
1533629f
MD
295 side_arg_list(side_arg_array_s64(array_fixint), side_arg_s64(42)));
296}
297
298static int64_t vla_fixint[] = { -444, 555, 123, 2897432587 };
299
89747802 300side_static_event(my_provider_event_vla_fixint, "myprovider", "myvlafixint", SIDE_LOGLEVEL_DEBUG,
1533629f 301 side_field_list(
9a55f555 302 side_field_vla("vlafixint", side_elem(side_type_s64(side_attr_list())), side_attr_list()),
485b800a 303 side_field_s64("v", side_attr_list()),
399c836b
MD
304 ),
305 side_attr_list()
1533629f
MD
306);
307
308static
309void test_vla_fixint(void)
310{
d5cdb129 311 side_event(my_provider_event_vla_fixint,
1533629f 312 side_arg_list(side_arg_vla_s64(vla_fixint, SIDE_ARRAY_SIZE(vla_fixint)), side_arg_s64(42)));
ba845af5
MD
313}
314
89747802 315side_static_event(my_provider_event_dynamic_basic,
a2e2357e
MD
316 "myprovider", "mydynamicbasic", SIDE_LOGLEVEL_DEBUG,
317 side_field_list(
66de373e 318 side_field_dynamic("dynamic"),
399c836b
MD
319 ),
320 side_attr_list()
a2e2357e
MD
321);
322
323static
324void test_dynamic_basic_type(void)
325{
d5cdb129 326 side_event(my_provider_event_dynamic_basic,
66de373e 327 side_arg_list(side_arg_dynamic_s16(-33, side_attr_list())));
a2e2357e
MD
328}
329
89747802 330side_static_event(my_provider_event_dynamic_vla,
a2e2357e
MD
331 "myprovider", "mydynamicvla", SIDE_LOGLEVEL_DEBUG,
332 side_field_list(
66de373e 333 side_field_dynamic("dynamic"),
399c836b
MD
334 ),
335 side_attr_list()
a2e2357e
MD
336);
337
338static
339void 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 );
d5cdb129 349 side_event(my_provider_event_dynamic_vla,
66de373e 350 side_arg_list(side_arg_dynamic_vla(&myvla)));
a2e2357e
MD
351}
352
89747802 353side_static_event(my_provider_event_dynamic_null,
465e5e7e
MD
354 "myprovider", "mydynamicnull", SIDE_LOGLEVEL_DEBUG,
355 side_field_list(
66de373e 356 side_field_dynamic("dynamic"),
399c836b
MD
357 ),
358 side_attr_list()
465e5e7e
MD
359);
360
361static
362void test_dynamic_null(void)
363{
d5cdb129 364 side_event(my_provider_event_dynamic_null,
66de373e 365 side_arg_list(side_arg_dynamic_null(side_attr_list())));
465e5e7e
MD
366}
367
89747802 368side_static_event(my_provider_event_dynamic_struct,
c208889e 369 "myprovider", "mydynamicstruct", SIDE_LOGLEVEL_DEBUG,
465e5e7e 370 side_field_list(
66de373e 371 side_field_dynamic("dynamic"),
399c836b
MD
372 ),
373 side_attr_list()
465e5e7e
MD
374);
375
376static
c208889e 377void test_dynamic_struct(void)
465e5e7e 378{
c208889e 379 side_arg_dynamic_define_struct(mystruct,
465e5e7e 380 side_arg_list(
808bd9bf
MD
381 side_arg_dynamic_field("a", side_arg_dynamic_u32(43, side_attr_list())),
382 side_arg_dynamic_field("b", side_arg_dynamic_string("zzz", side_attr_list())),
383 side_arg_dynamic_field("c", side_arg_dynamic_null(side_attr_list())),
8d20e708
MD
384 ),
385 side_attr_list()
465e5e7e
MD
386 );
387
d5cdb129 388 side_event(my_provider_event_dynamic_struct,
66de373e 389 side_arg_list(side_arg_dynamic_struct(&mystruct)));
465e5e7e
MD
390}
391
89747802 392side_static_event(my_provider_event_dynamic_nested_struct,
c208889e 393 "myprovider", "mydynamicnestedstruct", SIDE_LOGLEVEL_DEBUG,
3222d397 394 side_field_list(
66de373e 395 side_field_dynamic("dynamic"),
399c836b
MD
396 ),
397 side_attr_list()
3222d397
MD
398);
399
400static
c208889e 401void test_dynamic_nested_struct(void)
3222d397 402{
c208889e 403 side_arg_dynamic_define_struct(nested,
3222d397 404 side_arg_list(
808bd9bf
MD
405 side_arg_dynamic_field("a", side_arg_dynamic_u32(43, side_attr_list())),
406 side_arg_dynamic_field("b", side_arg_dynamic_u8(55, side_attr_list())),
8d20e708
MD
407 ),
408 side_attr_list()
3222d397 409 );
c208889e 410 side_arg_dynamic_define_struct(nested2,
3222d397 411 side_arg_list(
808bd9bf
MD
412 side_arg_dynamic_field("aa", side_arg_dynamic_u64(128, side_attr_list())),
413 side_arg_dynamic_field("bb", side_arg_dynamic_u16(1, side_attr_list())),
8d20e708
MD
414 ),
415 side_attr_list()
3222d397 416 );
c208889e 417 side_arg_dynamic_define_struct(mystruct,
3222d397 418 side_arg_list(
8d20e708
MD
419 side_arg_dynamic_field("nested", side_arg_dynamic_struct(&nested)),
420 side_arg_dynamic_field("nested2", side_arg_dynamic_struct(&nested2)),
421 ),
422 side_attr_list()
3222d397 423 );
d5cdb129 424 side_event(my_provider_event_dynamic_nested_struct,
66de373e 425 side_arg_list(side_arg_dynamic_struct(&mystruct)));
3222d397
MD
426}
427
89747802 428side_static_event(my_provider_event_dynamic_vla_struct,
c208889e 429 "myprovider", "mydynamicvlastruct", SIDE_LOGLEVEL_DEBUG,
7ce1b78f 430 side_field_list(
66de373e 431 side_field_dynamic("dynamic"),
399c836b
MD
432 ),
433 side_attr_list()
7ce1b78f
MD
434);
435
436static
c208889e 437void test_dynamic_vla_struct(void)
7ce1b78f 438{
c208889e 439 side_arg_dynamic_define_struct(nested,
7ce1b78f 440 side_arg_list(
808bd9bf
MD
441 side_arg_dynamic_field("a", side_arg_dynamic_u32(43, side_attr_list())),
442 side_arg_dynamic_field("b", side_arg_dynamic_u8(55, side_attr_list())),
8d20e708
MD
443 ),
444 side_attr_list()
7ce1b78f
MD
445 );
446 side_arg_dynamic_define_vec(myvla,
447 side_arg_list(
8d20e708
MD
448 side_arg_dynamic_struct(&nested),
449 side_arg_dynamic_struct(&nested),
450 side_arg_dynamic_struct(&nested),
451 side_arg_dynamic_struct(&nested),
452 ),
453 side_attr_list()
7ce1b78f 454 );
d5cdb129 455 side_event(my_provider_event_dynamic_vla_struct,
66de373e 456 side_arg_list(side_arg_dynamic_vla(&myvla)));
7ce1b78f
MD
457}
458
89747802 459side_static_event(my_provider_event_dynamic_struct_vla,
c208889e 460 "myprovider", "mydynamicstructvla", SIDE_LOGLEVEL_DEBUG,
980bfdc4 461 side_field_list(
66de373e 462 side_field_dynamic("dynamic"),
399c836b
MD
463 ),
464 side_attr_list()
980bfdc4
MD
465);
466
467static
c208889e 468void test_dynamic_struct_vla(void)
980bfdc4
MD
469{
470 side_arg_dynamic_define_vec(myvla,
948e3e72 471 side_arg_list(
808bd9bf
MD
472 side_arg_dynamic_u32(1, side_attr_list()),
473 side_arg_dynamic_u32(2, side_attr_list()),
474 side_arg_dynamic_u32(3, side_attr_list()),
8d20e708
MD
475 ),
476 side_attr_list()
df075fa5 477 );
980bfdc4 478 side_arg_dynamic_define_vec(myvla2,
948e3e72 479 side_arg_list(
808bd9bf
MD
480 side_arg_dynamic_u32(4, side_attr_list()),
481 side_arg_dynamic_u64(5, side_attr_list()),
482 side_arg_dynamic_u32(6, side_attr_list()),
8d20e708
MD
483 ),
484 side_attr_list()
df075fa5 485 );
c208889e 486 side_arg_dynamic_define_struct(mystruct,
980bfdc4 487 side_arg_list(
8d20e708
MD
488 side_arg_dynamic_field("a", side_arg_dynamic_vla(&myvla)),
489 side_arg_dynamic_field("b", side_arg_dynamic_vla(&myvla2)),
490 ),
491 side_attr_list()
980bfdc4 492 );
d5cdb129 493 side_event(my_provider_event_dynamic_struct_vla,
66de373e 494 side_arg_list(side_arg_dynamic_struct(&mystruct)));
980bfdc4
MD
495}
496
89747802 497side_static_event(my_provider_event_dynamic_nested_vla,
948e3e72
MD
498 "myprovider", "mydynamicnestedvla", SIDE_LOGLEVEL_DEBUG,
499 side_field_list(
66de373e 500 side_field_dynamic("dynamic"),
399c836b
MD
501 ),
502 side_attr_list()
948e3e72
MD
503);
504
505static
506void test_dynamic_nested_vla(void)
507{
508 side_arg_dynamic_define_vec(nestedvla,
509 side_arg_list(
808bd9bf
MD
510 side_arg_dynamic_u32(1, side_attr_list()),
511 side_arg_dynamic_u16(2, side_attr_list()),
512 side_arg_dynamic_u32(3, side_attr_list()),
8d20e708
MD
513 ),
514 side_attr_list()
948e3e72
MD
515 );
516 side_arg_dynamic_define_vec(nestedvla2,
517 side_arg_list(
808bd9bf
MD
518 side_arg_dynamic_u8(4, side_attr_list()),
519 side_arg_dynamic_u32(5, side_attr_list()),
520 side_arg_dynamic_u32(6, side_attr_list()),
8d20e708
MD
521 ),
522 side_attr_list()
948e3e72
MD
523 );
524 side_arg_dynamic_define_vec(myvla,
525 side_arg_list(
8d20e708
MD
526 side_arg_dynamic_vla(&nestedvla),
527 side_arg_dynamic_vla(&nestedvla2),
528 ),
529 side_attr_list()
948e3e72 530 );
d5cdb129 531 side_event(my_provider_event_dynamic_nested_vla,
66de373e 532 side_arg_list(side_arg_dynamic_vla(&myvla)));
948e3e72
MD
533}
534
89747802 535side_static_event_variadic(my_provider_event_variadic,
19fa6aa2 536 "myprovider", "myvariadicevent", SIDE_LOGLEVEL_DEBUG,
399c836b
MD
537 side_field_list(),
538 side_attr_list()
19fa6aa2
MD
539);
540
541static
542void test_variadic(void)
543{
d5cdb129 544 side_event_variadic(my_provider_event_variadic,
19fa6aa2
MD
545 side_arg_list(),
546 side_arg_list(
808bd9bf
MD
547 side_arg_dynamic_field("a", side_arg_dynamic_u32(55, side_attr_list())),
548 side_arg_dynamic_field("b", side_arg_dynamic_s8(-4, side_attr_list())),
8d20e708
MD
549 ),
550 side_attr_list()
19fa6aa2
MD
551 );
552}
553
89747802 554side_static_event_variadic(my_provider_event_static_variadic,
41c4d119
MD
555 "myprovider", "mystaticvariadicevent", SIDE_LOGLEVEL_DEBUG,
556 side_field_list(
485b800a
MD
557 side_field_u32("abc", side_attr_list()),
558 side_field_u16("def", side_attr_list()),
399c836b
MD
559 ),
560 side_attr_list()
41c4d119
MD
561);
562
563static
564void test_static_variadic(void)
565{
d5cdb129 566 side_event_variadic(my_provider_event_static_variadic,
41c4d119
MD
567 side_arg_list(
568 side_arg_u32(1),
569 side_arg_u16(2),
570 ),
571 side_arg_list(
808bd9bf
MD
572 side_arg_dynamic_field("a", side_arg_dynamic_u32(55, side_attr_list())),
573 side_arg_dynamic_field("b", side_arg_dynamic_s8(-4, side_attr_list())),
8d20e708
MD
574 ),
575 side_attr_list()
41c4d119
MD
576 );
577}
578
89747802 579side_static_event(my_provider_event_bool, "myprovider", "myeventbool", SIDE_LOGLEVEL_DEBUG,
4f40d951 580 side_field_list(
485b800a
MD
581 side_field_bool("a_false", side_attr_list()),
582 side_field_bool("b_true", side_attr_list()),
583 side_field_bool("c_true", side_attr_list()),
584 side_field_bool("d_true", side_attr_list()),
585 side_field_bool("e_true", side_attr_list()),
586 side_field_bool("f_false", side_attr_list()),
587 side_field_bool("g_true", side_attr_list()),
399c836b
MD
588 ),
589 side_attr_list()
4f40d951
MD
590);
591
592static
593void test_bool(void)
594{
595 uint32_t a = 0;
596 uint32_t b = 1;
597 uint64_t c = 0x12345678;
598 int16_t d = -32768;
599 bool e = true;
600 bool f = false;
601 uint32_t g = 256;
602
d5cdb129 603 side_event(my_provider_event_bool,
4f40d951
MD
604 side_arg_list(
605 side_arg_bool(a),
606 side_arg_bool(b),
607 side_arg_bool(c),
608 side_arg_bool(d),
609 side_arg_bool(e),
610 side_arg_bool(f),
611 side_arg_bool(g),
612 )
613 );
614}
615
89747802 616side_static_event_variadic(my_provider_event_dynamic_bool,
4f40d951 617 "myprovider", "mydynamicbool", SIDE_LOGLEVEL_DEBUG,
399c836b
MD
618 side_field_list(),
619 side_attr_list()
4f40d951
MD
620);
621
622static
623void test_dynamic_bool(void)
624{
d5cdb129 625 side_event_variadic(my_provider_event_dynamic_bool,
4f40d951
MD
626 side_arg_list(),
627 side_arg_list(
808bd9bf
MD
628 side_arg_dynamic_field("a_true", side_arg_dynamic_bool(55, side_attr_list())),
629 side_arg_dynamic_field("b_true", side_arg_dynamic_bool(-4, side_attr_list())),
630 side_arg_dynamic_field("c_false", side_arg_dynamic_bool(0, side_attr_list())),
631 side_arg_dynamic_field("d_true", side_arg_dynamic_bool(256, side_attr_list())),
8d20e708
MD
632 ),
633 side_attr_list()
4f40d951
MD
634 );
635}
636
89747802 637side_static_event(my_provider_event_dynamic_vla_visitor,
8ceca0cd
MD
638 "myprovider", "mydynamicvlavisitor", SIDE_LOGLEVEL_DEBUG,
639 side_field_list(
66de373e 640 side_field_dynamic("dynamic"),
399c836b
MD
641 ),
642 side_attr_list()
8ceca0cd
MD
643);
644
645struct app_dynamic_vla_visitor_ctx {
646 const uint32_t *ptr;
647 uint32_t length;
648};
649
650static
651enum side_visitor_status test_dynamic_vla_visitor(const struct side_tracer_dynamic_vla_visitor_ctx *tracer_ctx, void *_ctx)
652{
653 struct app_dynamic_vla_visitor_ctx *ctx = (struct app_dynamic_vla_visitor_ctx *) _ctx;
654 uint32_t length = ctx->length, i;
655
656 for (i = 0; i < length; i++) {
e623c6a0 657 const struct side_arg elem = side_arg_dynamic_u32(ctx->ptr[i], side_attr_list());
8ceca0cd
MD
658 if (tracer_ctx->write_elem(tracer_ctx, &elem) != SIDE_VISITOR_STATUS_OK)
659 return SIDE_VISITOR_STATUS_ERROR;
660 }
661 return SIDE_VISITOR_STATUS_OK;
662}
663
664static uint32_t testarray_dynamic_vla[] = { 1, 2, 3, 4, 5, 6, 7, 8 };
665
666static
667void test_dynamic_vla_with_visitor(void)
668{
d5cdb129 669 side_event_cond(my_provider_event_dynamic_vla_visitor) {
8ceca0cd
MD
670 struct app_dynamic_vla_visitor_ctx ctx = {
671 .ptr = testarray_dynamic_vla,
672 .length = SIDE_ARRAY_SIZE(testarray_dynamic_vla),
673 };
d5cdb129 674 side_event_call(my_provider_event_dynamic_vla_visitor,
8ceca0cd 675 side_arg_list(
66de373e 676 side_arg_dynamic_vla_visitor(test_dynamic_vla_visitor, &ctx, side_attr_list())
8ceca0cd
MD
677 )
678 );
679 }
680}
681
89747802 682side_static_event(my_provider_event_dynamic_struct_visitor,
2b359235
MD
683 "myprovider", "mydynamicstructvisitor", SIDE_LOGLEVEL_DEBUG,
684 side_field_list(
66de373e 685 side_field_dynamic("dynamic"),
399c836b
MD
686 ),
687 side_attr_list()
2b359235
MD
688);
689
690struct struct_visitor_pair {
691 const char *name;
692 uint32_t value;
693};
694
695struct app_dynamic_struct_visitor_ctx {
696 const struct struct_visitor_pair *ptr;
697 uint32_t length;
698};
699
700static
701enum side_visitor_status test_dynamic_struct_visitor(const struct side_tracer_dynamic_struct_visitor_ctx *tracer_ctx, void *_ctx)
702{
703 struct app_dynamic_struct_visitor_ctx *ctx = (struct app_dynamic_struct_visitor_ctx *) _ctx;
704 uint32_t length = ctx->length, i;
705
706 for (i = 0; i < length; i++) {
707 struct side_arg_dynamic_event_field dynamic_field = {
708 .field_name = ctx->ptr[i].name,
e623c6a0 709 .elem = side_arg_dynamic_u32(ctx->ptr[i].value, side_attr_list()),
2b359235
MD
710 };
711 if (tracer_ctx->write_field(tracer_ctx, &dynamic_field) != SIDE_VISITOR_STATUS_OK)
712 return SIDE_VISITOR_STATUS_ERROR;
713 }
714 return SIDE_VISITOR_STATUS_OK;
715}
716
717static struct struct_visitor_pair testarray_dynamic_struct[] = {
718 { "a", 1, },
719 { "b", 2, },
720 { "c", 3, },
721 { "d", 4, },
722};
723
724static
725void test_dynamic_struct_with_visitor(void)
726{
d5cdb129 727 side_event_cond(my_provider_event_dynamic_struct_visitor) {
2b359235
MD
728 struct app_dynamic_struct_visitor_ctx ctx = {
729 .ptr = testarray_dynamic_struct,
730 .length = SIDE_ARRAY_SIZE(testarray_dynamic_struct),
731 };
d5cdb129 732 side_event_call(my_provider_event_dynamic_struct_visitor,
2b359235 733 side_arg_list(
66de373e 734 side_arg_dynamic_struct_visitor(test_dynamic_struct_visitor, &ctx, side_attr_list())
2b359235
MD
735 )
736 );
737 }
738}
739
89747802 740side_static_event(my_provider_event_user_attribute, "myprovider", "myevent_user_attribute", SIDE_LOGLEVEL_DEBUG,
65010f43 741 side_field_list(
485b800a
MD
742 side_field_u32("abc", side_attr_list()),
743 side_field_s64("def", side_attr_list()),
399c836b
MD
744 ),
745 side_attr_list(
bc3c89b3
MD
746 side_attr("user_attribute_a", side_attr_string("val1")),
747 side_attr("user_attribute_b", side_attr_string("val2")),
65010f43
MD
748 )
749);
750
751static
752void test_event_user_attribute(void)
753{
d5cdb129 754 side_event(my_provider_event_user_attribute, side_arg_list(side_arg_u32(1), side_arg_s64(2)));
65010f43
MD
755}
756
89747802 757side_static_event(my_provider_field_user_attribute, "myprovider", "myevent_field_attribute", SIDE_LOGLEVEL_DEBUG,
a848763d 758 side_field_list(
485b800a 759 side_field_u32("abc",
a848763d 760 side_attr_list(
bc3c89b3
MD
761 side_attr("user_attribute_a", side_attr_string("val1")),
762 side_attr("user_attribute_b", side_attr_u32(2)),
a848763d
MD
763 )
764 ),
485b800a 765 side_field_s64("def",
a848763d 766 side_attr_list(
bc3c89b3
MD
767 side_attr("user_attribute_c", side_attr_string("val3")),
768 side_attr("user_attribute_d", side_attr_s64(-5)),
a848763d
MD
769 )
770 ),
771 ),
772 side_attr_list()
773);
774
775static
776void test_field_user_attribute(void)
777{
d5cdb129 778 side_event(my_provider_field_user_attribute, side_arg_list(side_arg_u32(1), side_arg_s64(2)));
a848763d
MD
779}
780
89747802 781side_static_event_variadic(my_provider_event_variadic_attr,
808bd9bf
MD
782 "myprovider", "myvariadiceventattr", SIDE_LOGLEVEL_DEBUG,
783 side_field_list(),
784 side_attr_list()
785);
786
787static
788void test_variadic_attr(void)
789{
d5cdb129 790 side_event_variadic(my_provider_event_variadic_attr,
808bd9bf
MD
791 side_arg_list(),
792 side_arg_list(
793 side_arg_dynamic_field("a",
794 side_arg_dynamic_u32(55,
795 side_attr_list(
bc3c89b3
MD
796 side_attr("user_attribute_c", side_attr_string("valX")),
797 side_attr("user_attribute_d", side_attr_u8(55)),
808bd9bf
MD
798 )
799 )
800 ),
801 side_arg_dynamic_field("b",
802 side_arg_dynamic_s8(-4,
803 side_attr_list(
bc3c89b3
MD
804 side_attr("X", side_attr_u8(1)),
805 side_attr("Y", side_attr_s8(2)),
808bd9bf
MD
806 )
807 )
808 ),
8d20e708
MD
809 ),
810 side_attr_list()
808bd9bf
MD
811 );
812}
813
89747802 814side_static_event_variadic(my_provider_event_variadic_vla_attr,
808bd9bf
MD
815 "myprovider", "myvariadiceventvlaattr", SIDE_LOGLEVEL_DEBUG,
816 side_field_list(),
817 side_attr_list()
818);
819
820static
821void test_variadic_vla_attr(void)
822{
823 side_arg_dynamic_define_vec(myvla,
824 side_arg_list(
825 side_arg_dynamic_u32(1,
826 side_attr_list(
bc3c89b3
MD
827 side_attr("Z", side_attr_u8(0)),
828 side_attr("A", side_attr_u8(123)),
808bd9bf
MD
829 )
830 ),
831 side_arg_dynamic_u32(2, side_attr_list()),
832 side_arg_dynamic_u32(3, side_attr_list()),
8d20e708
MD
833 ),
834 side_attr_list(
835 side_attr("X", side_attr_u8(1)),
836 side_attr("Y", side_attr_u8(2)),
808bd9bf
MD
837 )
838 );
d5cdb129 839 side_event_variadic(my_provider_event_variadic_vla_attr,
808bd9bf
MD
840 side_arg_list(),
841 side_arg_list(
8d20e708
MD
842 side_arg_dynamic_field("a", side_arg_dynamic_vla(&myvla)),
843 ),
844 side_attr_list()
808bd9bf
MD
845 );
846}
847
89747802 848side_static_event_variadic(my_provider_event_variadic_struct_attr,
808bd9bf
MD
849 "myprovider", "myvariadiceventstructattr", SIDE_LOGLEVEL_DEBUG,
850 side_field_list(),
851 side_attr_list()
852);
853
854static
855void test_variadic_struct_attr(void)
856{
d5cdb129 857 side_event_cond(my_provider_event_variadic_struct_attr) {
808bd9bf
MD
858 side_arg_dynamic_define_struct(mystruct,
859 side_arg_list(
860 side_arg_dynamic_field("a",
861 side_arg_dynamic_u32(43,
862 side_attr_list(
bc3c89b3 863 side_attr("A", side_attr_bool(true)),
808bd9bf
MD
864 )
865 )
866 ),
867 side_arg_dynamic_field("b", side_arg_dynamic_u8(55, side_attr_list())),
8d20e708
MD
868 ),
869 side_attr_list(
870 side_attr("X", side_attr_u8(1)),
871 side_attr("Y", side_attr_u8(2)),
808bd9bf
MD
872 )
873 );
d5cdb129 874 side_event_call_variadic(my_provider_event_variadic_struct_attr,
808bd9bf
MD
875 side_arg_list(),
876 side_arg_list(
8d20e708
MD
877 side_arg_dynamic_field("a", side_arg_dynamic_struct(&mystruct)),
878 ),
879 side_attr_list()
808bd9bf
MD
880 );
881 }
882}
883
89747802 884side_static_event(my_provider_event_float, "myprovider", "myeventfloat", SIDE_LOGLEVEL_DEBUG,
fb25b355
MD
885 side_field_list(
886#if __HAVE_FLOAT16
485b800a 887 side_field_float_binary16("binary16", side_attr_list()),
8bdd5c12
MD
888 side_field_float_binary16_le("binary16_le", side_attr_list()),
889 side_field_float_binary16_be("binary16_be", side_attr_list()),
fb25b355
MD
890#endif
891#if __HAVE_FLOAT32
485b800a 892 side_field_float_binary32("binary32", side_attr_list()),
8bdd5c12
MD
893 side_field_float_binary32_le("binary32_le", side_attr_list()),
894 side_field_float_binary32_be("binary32_be", side_attr_list()),
fb25b355
MD
895#endif
896#if __HAVE_FLOAT64
485b800a 897 side_field_float_binary64("binary64", side_attr_list()),
8bdd5c12
MD
898 side_field_float_binary64_le("binary64_le", side_attr_list()),
899 side_field_float_binary64_be("binary64_be", side_attr_list()),
fb25b355
MD
900#endif
901#if __HAVE_FLOAT128
485b800a 902 side_field_float_binary128("binary128", side_attr_list()),
8bdd5c12
MD
903 side_field_float_binary128_le("binary128_le", side_attr_list()),
904 side_field_float_binary128_be("binary128_be", side_attr_list()),
fb25b355
MD
905#endif
906 ),
907 side_attr_list()
908);
909
910static
911void test_float(void)
912{
8bdd5c12
MD
913#if __HAVE_FLOAT16
914 union {
915 _Float16 f;
916 uint16_t u;
917 } float16 = {
918 .f = 1.1,
919 };
920#endif
921#if __HAVE_FLOAT32
922 union {
923 _Float32 f;
924 uint32_t u;
925 } float32 = {
926 .f = 2.2,
927 };
928#endif
929#if __HAVE_FLOAT64
930 union {
931 _Float64 f;
932 uint64_t u;
933 } float64 = {
934 .f = 3.3,
935 };
936#endif
937#if __HAVE_FLOAT128
938 union {
939 _Float128 f;
940 char arr[16];
941 } float128 = {
942 .f = 4.4,
943 };
944#endif
945
946#if __HAVE_FLOAT16
947 float16.u = side_bswap_16(float16.u);
948#endif
949#if __HAVE_FLOAT32
950 float32.u = side_bswap_32(float32.u);
951#endif
952#if __HAVE_FLOAT64
953 float64.u = side_bswap_64(float64.u);
954#endif
955#if __HAVE_FLOAT128
956 side_bswap_128p(float128.arr);
957#endif
958
d5cdb129 959 side_event(my_provider_event_float,
fb25b355
MD
960 side_arg_list(
961#if __HAVE_FLOAT16
962 side_arg_float_binary16(1.1),
8bdd5c12
MD
963# if SIDE_FLOAT_WORD_ORDER == SIDE_LITTLE_ENDIAN
964 side_arg_float_binary16(1.1),
965 side_arg_float_binary16(float16.f),
966# else
967 side_arg_float_binary16(float16.f),
968 side_arg_float_binary16(1.1),
969# endif
fb25b355
MD
970#endif
971#if __HAVE_FLOAT32
972 side_arg_float_binary32(2.2),
8bdd5c12
MD
973# if SIDE_FLOAT_WORD_ORDER == SIDE_LITTLE_ENDIAN
974 side_arg_float_binary32(2.2),
975 side_arg_float_binary32(float32.f),
976# else
977 side_arg_float_binary32(float32.f),
978 side_arg_float_binary32(2.2),
979# endif
fb25b355
MD
980#endif
981#if __HAVE_FLOAT64
982 side_arg_float_binary64(3.3),
8bdd5c12
MD
983# if SIDE_FLOAT_WORD_ORDER == SIDE_LITTLE_ENDIAN
984 side_arg_float_binary64(3.3),
985 side_arg_float_binary64(float64.f),
986# else
987 side_arg_float_binary64(float64.f),
988 side_arg_float_binary64(3.3),
989# endif
fb25b355
MD
990#endif
991#if __HAVE_FLOAT128
992 side_arg_float_binary128(4.4),
8bdd5c12
MD
993# if SIDE_FLOAT_WORD_ORDER == SIDE_LITTLE_ENDIAN
994 side_arg_float_binary128(4.4),
995 side_arg_float_binary128(float128.f),
996# else
997 side_arg_float_binary128(float128.f),
998 side_arg_float_binary128(4.4),
999# endif
fb25b355
MD
1000#endif
1001 )
1002 );
1003}
1004
89747802 1005side_static_event_variadic(my_provider_event_variadic_float,
fb25b355
MD
1006 "myprovider", "myvariadicfloat", SIDE_LOGLEVEL_DEBUG,
1007 side_field_list(),
1008 side_attr_list()
1009);
1010
1011static
1012void test_variadic_float(void)
1013{
8bdd5c12
MD
1014#if __HAVE_FLOAT16
1015 union {
1016 _Float16 f;
1017 uint16_t u;
1018 } float16 = {
1019 .f = 1.1,
1020 };
1021#endif
1022#if __HAVE_FLOAT32
1023 union {
1024 _Float32 f;
1025 uint32_t u;
1026 } float32 = {
1027 .f = 2.2,
1028 };
1029#endif
1030#if __HAVE_FLOAT64
1031 union {
1032 _Float64 f;
1033 uint64_t u;
1034 } float64 = {
1035 .f = 3.3,
1036 };
1037#endif
1038#if __HAVE_FLOAT128
1039 union {
1040 _Float128 f;
1041 char arr[16];
1042 } float128 = {
1043 .f = 4.4,
1044 };
1045#endif
1046
1047#if __HAVE_FLOAT16
1048 float16.u = side_bswap_16(float16.u);
1049#endif
1050#if __HAVE_FLOAT32
1051 float32.u = side_bswap_32(float32.u);
1052#endif
1053#if __HAVE_FLOAT64
1054 float64.u = side_bswap_64(float64.u);
1055#endif
1056#if __HAVE_FLOAT128
1057 side_bswap_128p(float128.arr);
1058#endif
1059
d5cdb129 1060 side_event_variadic(my_provider_event_variadic_float,
fb25b355
MD
1061 side_arg_list(),
1062 side_arg_list(
1063#if __HAVE_FLOAT16
8bdd5c12
MD
1064 side_arg_dynamic_field("binary16", side_arg_dynamic_float_binary16(1.1, side_attr_list())),
1065# if SIDE_FLOAT_WORD_ORDER == SIDE_LITTLE_ENDIAN
1066 side_arg_dynamic_field("binary16_le", side_arg_dynamic_float_binary16_le(1.1, side_attr_list())),
1067 side_arg_dynamic_field("binary16_be", side_arg_dynamic_float_binary16_be(float16.f, side_attr_list())),
1068# else
1069 side_arg_dynamic_field("binary16_le", side_arg_dynamic_float_binary16_le(float16.f, side_attr_list())),
1070 side_arg_dynamic_field("binary16_be", side_arg_dynamic_float_binary16_be(1.1, side_attr_list())),
1071# endif
fb25b355
MD
1072#endif
1073#if __HAVE_FLOAT32
8bdd5c12
MD
1074 side_arg_dynamic_field("binary32", side_arg_dynamic_float_binary32(2.2, side_attr_list())),
1075# if SIDE_FLOAT_WORD_ORDER == SIDE_LITTLE_ENDIAN
1076 side_arg_dynamic_field("binary32_le", side_arg_dynamic_float_binary32_le(2.2, side_attr_list())),
1077 side_arg_dynamic_field("binary32_be", side_arg_dynamic_float_binary32_be(float32.f, side_attr_list())),
1078# else
1079 side_arg_dynamic_field("binary32_le", side_arg_dynamic_float_binary32_le(float32.f, side_attr_list())),
1080 side_arg_dynamic_field("binary32_be", side_arg_dynamic_float_binary32_be(2.2, side_attr_list())),
1081# endif
fb25b355
MD
1082#endif
1083#if __HAVE_FLOAT64
8bdd5c12
MD
1084 side_arg_dynamic_field("binary64", side_arg_dynamic_float_binary64(3.3, side_attr_list())),
1085# if SIDE_FLOAT_WORD_ORDER == SIDE_LITTLE_ENDIAN
1086 side_arg_dynamic_field("binary64_le", side_arg_dynamic_float_binary64_le(3.3, side_attr_list())),
1087 side_arg_dynamic_field("binary64_be", side_arg_dynamic_float_binary64_be(float64.f, side_attr_list())),
1088# else
1089 side_arg_dynamic_field("binary64_le", side_arg_dynamic_float_binary64_le(float64.f, side_attr_list())),
1090 side_arg_dynamic_field("binary64_be", side_arg_dynamic_float_binary64_be(3.3, side_attr_list())),
1091# endif
fb25b355
MD
1092#endif
1093#if __HAVE_FLOAT128
8bdd5c12
MD
1094 side_arg_dynamic_field("binary128", side_arg_dynamic_float_binary128(4.4, side_attr_list())),
1095# if SIDE_FLOAT_WORD_ORDER == SIDE_LITTLE_ENDIAN
1096 side_arg_dynamic_field("binary128_le", side_arg_dynamic_float_binary128_le(4.4, side_attr_list())),
1097 side_arg_dynamic_field("binary128_be", side_arg_dynamic_float_binary128_be(float128.f, side_attr_list())),
1098# else
1099 side_arg_dynamic_field("binary128_le", side_arg_dynamic_float_binary128_le(float128.f, side_attr_list())),
1100 side_arg_dynamic_field("binary128_be", side_arg_dynamic_float_binary128_be(4.4, side_attr_list())),
1101# endif
fb25b355 1102#endif
8d20e708
MD
1103 ),
1104 side_attr_list()
fb25b355
MD
1105 );
1106}
1107
79f677ba 1108static side_define_enum(myenum,
66cff328 1109 side_enum_mapping_list(
79f677ba
MD
1110 side_enum_mapping_range("one-ten", 1, 10),
1111 side_enum_mapping_range("100-200", 100, 200),
1112 side_enum_mapping_value("200", 200),
1113 side_enum_mapping_value("300", 300),
d4328528
MD
1114 ),
1115 side_attr_list()
79f677ba
MD
1116);
1117
89747802 1118side_static_event(my_provider_event_enum, "myprovider", "myeventenum", SIDE_LOGLEVEL_DEBUG,
79f677ba 1119 side_field_list(
f89c4ad1
MD
1120 side_field_enum("5", &myenum, side_elem(side_type_u32(side_attr_list()))),
1121 side_field_enum("400", &myenum, side_elem(side_type_u64(side_attr_list()))),
1122 side_field_enum("200", &myenum, side_elem(side_type_u8(side_attr_list()))),
1123 side_field_enum("-100", &myenum, side_elem(side_type_s8(side_attr_list()))),
8bdd5c12
MD
1124 side_field_enum("6_be", &myenum, side_elem(side_type_u32_be(side_attr_list()))),
1125 side_field_enum("6_le", &myenum, side_elem(side_type_u32_le(side_attr_list()))),
79f677ba
MD
1126 ),
1127 side_attr_list()
1128);
1129
1130static
1131void test_enum(void)
1132{
d5cdb129 1133 side_event(my_provider_event_enum,
79f677ba 1134 side_arg_list(
d8be25de
MD
1135 side_arg_u32(5),
1136 side_arg_u64(400),
1137 side_arg_u8(200),
1138 side_arg_s8(-100),
8bdd5c12
MD
1139#if SIDE_BYTE_ORDER == SIDE_LITTLE_ENDIAN
1140 side_arg_u32(side_bswap_32(6)),
1141 side_arg_u32(6),
1142#else
1143 side_arg_u32(side_bswap_32(6)),
1144 side_arg_u32(6),
1145#endif
79f677ba
MD
1146 )
1147 );
1148}
1149
ea32e5fc 1150/* A bitmap enum maps bits to labels. */
66cff328
MD
1151static side_define_enum_bitmap(myenum_bitmap,
1152 side_enum_bitmap_mapping_list(
1153 side_enum_bitmap_mapping_value("0", 0),
1154 side_enum_bitmap_mapping_range("1-2", 1, 2),
1155 side_enum_bitmap_mapping_range("2-4", 2, 4),
1156 side_enum_bitmap_mapping_value("3", 3),
1157 side_enum_bitmap_mapping_value("30", 30),
1158 side_enum_bitmap_mapping_value("63", 63),
af6aa6e1
MD
1159 side_enum_bitmap_mapping_range("158-160", 158, 160),
1160 side_enum_bitmap_mapping_value("159", 159),
1161 side_enum_bitmap_mapping_range("500-700", 500, 700),
d4328528
MD
1162 ),
1163 side_attr_list()
ea32e5fc
MD
1164);
1165
89747802 1166side_static_event(my_provider_event_enum_bitmap, "myprovider", "myeventenumbitmap", SIDE_LOGLEVEL_DEBUG,
ea32e5fc 1167 side_field_list(
f89c4ad1
MD
1168 side_field_enum_bitmap("bit_0", &myenum_bitmap, side_elem(side_type_u32(side_attr_list()))),
1169 side_field_enum_bitmap("bit_1", &myenum_bitmap, side_elem(side_type_u32(side_attr_list()))),
1170 side_field_enum_bitmap("bit_2", &myenum_bitmap, side_elem(side_type_u8(side_attr_list()))),
1171 side_field_enum_bitmap("bit_3", &myenum_bitmap, side_elem(side_type_u8(side_attr_list()))),
1172 side_field_enum_bitmap("bit_30", &myenum_bitmap, side_elem(side_type_u32(side_attr_list()))),
1173 side_field_enum_bitmap("bit_31", &myenum_bitmap, side_elem(side_type_u32(side_attr_list()))),
1174 side_field_enum_bitmap("bit_63", &myenum_bitmap, side_elem(side_type_u64(side_attr_list()))),
1175 side_field_enum_bitmap("bits_1+63", &myenum_bitmap, side_elem(side_type_u64(side_attr_list()))),
4cc2880b 1176 side_field_enum_bitmap("byte_bit_2", &myenum_bitmap, side_elem(side_type_byte(side_attr_list()))),
f89c4ad1
MD
1177 side_field_enum_bitmap("bit_159", &myenum_bitmap,
1178 side_elem(side_type_array(side_elem(side_type_u32(side_attr_list())), 5, side_attr_list()))),
1179 side_field_enum_bitmap("bit_159", &myenum_bitmap,
1180 side_elem(side_type_vla(side_elem(side_type_u32(side_attr_list())), side_attr_list()))),
8bdd5c12
MD
1181 side_field_enum_bitmap("bit_2_be", &myenum_bitmap, side_elem(side_type_u32_be(side_attr_list()))),
1182 side_field_enum_bitmap("bit_2_le", &myenum_bitmap, side_elem(side_type_u32_le(side_attr_list()))),
ea32e5fc
MD
1183 ),
1184 side_attr_list()
1185);
1186
1187static
1188void test_enum_bitmap(void)
1189{
af6aa6e1
MD
1190 side_event_cond(my_provider_event_enum_bitmap) {
1191 side_arg_define_vec(myarray,
1192 side_arg_list(
1193 side_arg_u32(0),
1194 side_arg_u32(0),
1195 side_arg_u32(0),
1196 side_arg_u32(0),
1197 side_arg_u32(0x80000000), /* bit 159 */
1198 )
1199 );
1200 side_event_call(my_provider_event_enum_bitmap,
1201 side_arg_list(
bab5d6e4
MD
1202 side_arg_u32(1 << 0),
1203 side_arg_u32(1 << 1),
1204 side_arg_u8(1 << 2),
1205 side_arg_u8(1 << 3),
1206 side_arg_u32(1 << 30),
1207 side_arg_u32(1 << 31),
1208 side_arg_u64(1ULL << 63),
1209 side_arg_u64((1ULL << 1) | (1ULL << 63)),
4cc2880b 1210 side_arg_byte(1 << 2),
bab5d6e4
MD
1211 side_arg_array(&myarray),
1212 side_arg_vla(&myarray),
8bdd5c12
MD
1213#if SIDE_BYTE_ORDER == SIDE_LITTLE_ENDIAN
1214 side_arg_u32(side_bswap_32(1 << 2)),
1215 side_arg_u32(1 << 2),
1216#else
1217 side_arg_u32(0x06000000),
1218 side_arg_u32(side_bswap_32(1 << 2)),
1219#endif
af6aa6e1
MD
1220 )
1221 );
1222 }
ea32e5fc
MD
1223}
1224
7aec0d09
MD
1225static uint8_t blob_fixint[] = { 0x55, 0x44, 0x33, 0x22, 0x11 };
1226
89747802 1227side_static_event_variadic(my_provider_event_blob, "myprovider", "myeventblob", SIDE_LOGLEVEL_DEBUG,
7aec0d09 1228 side_field_list(
f7653b43
MD
1229 side_field_byte("blobfield", side_attr_list()),
1230 side_field_array("arrayblob", side_elem(side_type_byte(side_attr_list())), 3, side_attr_list()),
1231 side_field_array("arrayblobfix", side_elem(side_type_byte(side_attr_list())), SIDE_ARRAY_SIZE(blob_fixint), side_attr_list()),
1232 side_field_vla("vlablobfix", side_elem(side_type_byte(side_attr_list())), side_attr_list()),
7aec0d09
MD
1233 ),
1234 side_attr_list()
1235);
1236
1237static
1238void test_blob(void)
1239{
d5cdb129 1240 side_event_cond(my_provider_event_blob) {
f7653b43 1241 side_arg_define_vec(myarray, side_arg_list(side_arg_byte(1), side_arg_byte(2), side_arg_byte(3)));
199e7aa9
MD
1242 side_arg_dynamic_define_vec(myvla,
1243 side_arg_list(
f7653b43
MD
1244 side_arg_dynamic_byte(0x22, side_attr_list()),
1245 side_arg_dynamic_byte(0x33, side_attr_list()),
8d20e708
MD
1246 ),
1247 side_attr_list()
199e7aa9 1248 );
d5cdb129 1249 side_event_call_variadic(my_provider_event_blob,
7aec0d09 1250 side_arg_list(
f7653b43 1251 side_arg_byte(0x55),
7aec0d09 1252 side_arg_array(&myarray),
f7653b43
MD
1253 side_arg_array_byte(blob_fixint),
1254 side_arg_vla_byte(blob_fixint, SIDE_ARRAY_SIZE(blob_fixint)),
199e7aa9
MD
1255 ),
1256 side_arg_list(
1257 side_arg_dynamic_field("varblobfield",
f7653b43 1258 side_arg_dynamic_byte(0x55, side_attr_list())
199e7aa9 1259 ),
8d20e708
MD
1260 side_arg_dynamic_field("varblobvla", side_arg_dynamic_vla(&myvla)),
1261 ),
1262 side_attr_list()
7aec0d09
MD
1263 );
1264 }
1265}
ea32e5fc 1266
89747802 1267side_static_event_variadic(my_provider_event_format_string,
71aa8975
MD
1268 "myprovider", "myeventformatstring", SIDE_LOGLEVEL_DEBUG,
1269 side_field_list(
1270 side_field_string("fmt", side_attr_list()),
1271 ),
1272 side_attr_list(
1273 side_attr("lang.c.format_string", side_attr_bool(true)),
1274 )
1275);
1276
1277static
1278void test_fmt_string(void)
1279{
71aa8975
MD
1280 side_event_cond(my_provider_event_format_string) {
1281 side_arg_dynamic_define_vec(args,
1282 side_arg_list(
1283 side_arg_dynamic_string("blah", side_attr_list()),
1284 side_arg_dynamic_s32(123, side_attr_list()),
1285 ),
1286 side_attr_list()
1287 );
1288 side_event_call_variadic(my_provider_event_format_string,
1289 side_arg_list(
1290 side_arg_string("This is a formatted string with str: %s int: %d"),
1291 ),
1292 side_arg_list(
1293 side_arg_dynamic_field("arguments", side_arg_dynamic_vla(&args)),
1294 ),
1295 side_attr_list()
1296 );
1297 }
1298}
1299
8bdd5c12
MD
1300side_static_event_variadic(my_provider_event_endian, "myprovider", "myevent_endian", SIDE_LOGLEVEL_DEBUG,
1301 side_field_list(
1302 side_field_u16_le("u16_le", side_attr_list()),
1303 side_field_u32_le("u32_le", side_attr_list()),
1304 side_field_u64_le("u64_le", side_attr_list()),
1305 side_field_s16_le("s16_le", side_attr_list()),
1306 side_field_s32_le("s32_le", side_attr_list()),
1307 side_field_s64_le("s64_le", side_attr_list()),
1308 side_field_u16_be("u16_be", side_attr_list()),
1309 side_field_u32_be("u32_be", side_attr_list()),
1310 side_field_u64_be("u64_be", side_attr_list()),
1311 side_field_s16_be("s16_be", side_attr_list()),
1312 side_field_s32_be("s32_be", side_attr_list()),
1313 side_field_s64_be("s64_be", side_attr_list()),
1314 ),
1315 side_attr_list()
1316);
1317
1318static
1319void test_endian(void)
1320{
1321 side_event_variadic(my_provider_event_endian,
1322 side_arg_list(
1323#if SIDE_BYTE_ORDER == SIDE_LITTLE_ENDIAN
1324 side_arg_u16(1),
1325 side_arg_u32(1),
1326 side_arg_u64(1),
1327 side_arg_s16(1),
1328 side_arg_s32(1),
1329 side_arg_s64(1),
1330 side_arg_u16(side_bswap_16(1)),
1331 side_arg_u32(side_bswap_32(1)),
1332 side_arg_u64(side_bswap_64(1)),
1333 side_arg_s16(side_bswap_16(1)),
1334 side_arg_s32(side_bswap_32(1)),
1335 side_arg_s64(side_bswap_64(1)),
1336#else
1337 side_arg_u16(side_bswap_16(1)),
1338 side_arg_u32(side_bswap_32(1)),
1339 side_arg_u64(side_bswap_64(1)),
1340 side_arg_s16(side_bswap_16(1)),
1341 side_arg_s32(side_bswap_32(1)),
1342 side_arg_s64(side_bswap_64(1)),
1343 side_arg_u16(1),
1344 side_arg_u32(1),
1345 side_arg_u64(1),
1346 side_arg_s16(1),
1347 side_arg_s32(1),
1348 side_arg_s64(1),
1349#endif
1350 ),
1351 side_arg_list(
1352#if SIDE_BYTE_ORDER == SIDE_LITTLE_ENDIAN
1353 side_arg_dynamic_field("u16_le", side_arg_dynamic_u16_le(1, side_attr_list())),
1354 side_arg_dynamic_field("u32_le", side_arg_dynamic_u32_le(1, side_attr_list())),
1355 side_arg_dynamic_field("u64_le", side_arg_dynamic_u64_le(1, side_attr_list())),
1356 side_arg_dynamic_field("s16_le", side_arg_dynamic_s16_le(1, side_attr_list())),
1357 side_arg_dynamic_field("s32_le", side_arg_dynamic_s32_le(1, side_attr_list())),
1358 side_arg_dynamic_field("s64_le", side_arg_dynamic_s64_le(1, side_attr_list())),
1359 side_arg_dynamic_field("u16_be", side_arg_dynamic_u16_be(side_bswap_16(1), side_attr_list())),
1360 side_arg_dynamic_field("u32_be", side_arg_dynamic_u32_be(side_bswap_32(1), side_attr_list())),
1361 side_arg_dynamic_field("u64_be", side_arg_dynamic_u64_be(side_bswap_64(1), side_attr_list())),
1362 side_arg_dynamic_field("s16_be", side_arg_dynamic_s16_be(side_bswap_16(1), side_attr_list())),
1363 side_arg_dynamic_field("s32_be", side_arg_dynamic_s32_be(side_bswap_32(1), side_attr_list())),
1364 side_arg_dynamic_field("s64_be", side_arg_dynamic_s64_be(side_bswap_64(1), side_attr_list())),
1365#else
1366 side_arg_dynamic_field("u16_le", side_arg_dynamic_u16_le(side_bswap_16(1), side_attr_list())),
1367 side_arg_dynamic_field("u32_le", side_arg_dynamic_u32_le(side_bswap_32(1), side_attr_list())),
1368 side_arg_dynamic_field("u64_le", side_arg_dynamic_u64_le(side_bswap_64(1), side_attr_list())),
1369 side_arg_dynamic_field("s16_le", side_arg_dynamic_s16_le(side_bswap_16(1), side_attr_list())),
1370 side_arg_dynamic_field("s32_le", side_arg_dynamic_s32_le(side_bswap_32(1), side_attr_list())),
1371 side_arg_dynamic_field("s64_le", side_arg_dynamic_s64_le(side_bswap_64(1), side_attr_list())),
1372 side_arg_dynamic_field("u16_be", side_arg_dynamic_u16_be(1, side_attr_list())),
1373 side_arg_dynamic_field("u32_be", side_arg_dynamic_u32_be(1, side_attr_list())),
1374 side_arg_dynamic_field("u64_be", side_arg_dynamic_u64_be(1, side_attr_list())),
1375 side_arg_dynamic_field("s16_be", side_arg_dynamic_s16_be(1, side_attr_list())),
1376 side_arg_dynamic_field("s32_be", side_arg_dynamic_s32_be(1, side_attr_list())),
1377 side_arg_dynamic_field("s64_be", side_arg_dynamic_s64_be(1, side_attr_list())),
1378#endif
1379 ),
1380 side_attr_list()
1381 );
1382}
1383
1d9c515c
MD
1384side_static_event(my_provider_event_base, "myprovider", "myevent_base", SIDE_LOGLEVEL_DEBUG,
1385 side_field_list(
1386 side_field_u8("u8base2", side_attr_list(side_attr("std.integer.base", side_attr_u8(2)))),
1387 side_field_u8("u8base8", side_attr_list(side_attr("std.integer.base", side_attr_u8(8)))),
1388 side_field_u8("u8base10", side_attr_list(side_attr("std.integer.base", side_attr_u8(10)))),
1389 side_field_u8("u8base16", side_attr_list(side_attr("std.integer.base", side_attr_u8(16)))),
1390 side_field_u16("u16base2", side_attr_list(side_attr("std.integer.base", side_attr_u8(2)))),
1391 side_field_u16("u16base8", side_attr_list(side_attr("std.integer.base", side_attr_u8(8)))),
1392 side_field_u16("u16base10", side_attr_list(side_attr("std.integer.base", side_attr_u8(10)))),
1393 side_field_u16("u16base16", side_attr_list(side_attr("std.integer.base", side_attr_u8(16)))),
1394 side_field_u32("u32base2", side_attr_list(side_attr("std.integer.base", side_attr_u8(2)))),
1395 side_field_u32("u32base8", side_attr_list(side_attr("std.integer.base", side_attr_u8(8)))),
1396 side_field_u32("u32base10", side_attr_list(side_attr("std.integer.base", side_attr_u8(10)))),
1397 side_field_u32("u32base16", side_attr_list(side_attr("std.integer.base", side_attr_u8(16)))),
1398 side_field_u64("u64base2", side_attr_list(side_attr("std.integer.base", side_attr_u8(2)))),
1399 side_field_u64("u64base8", side_attr_list(side_attr("std.integer.base", side_attr_u8(8)))),
1400 side_field_u64("u64base10", side_attr_list(side_attr("std.integer.base", side_attr_u8(10)))),
1401 side_field_u64("u64base16", side_attr_list(side_attr("std.integer.base", side_attr_u8(16)))),
1402 side_field_s8("s8base2", side_attr_list(side_attr("std.integer.base", side_attr_u8(2)))),
1403 side_field_s8("s8base8", side_attr_list(side_attr("std.integer.base", side_attr_u8(8)))),
1404 side_field_s8("s8base10", side_attr_list(side_attr("std.integer.base", side_attr_u8(10)))),
1405 side_field_s8("s8base16", side_attr_list(side_attr("std.integer.base", side_attr_u8(16)))),
1406 side_field_s16("s16base2", side_attr_list(side_attr("std.integer.base", side_attr_u8(2)))),
1407 side_field_s16("s16base8", side_attr_list(side_attr("std.integer.base", side_attr_u8(8)))),
1408 side_field_s16("s16base10", side_attr_list(side_attr("std.integer.base", side_attr_u8(10)))),
1409 side_field_s16("s16base16", side_attr_list(side_attr("std.integer.base", side_attr_u8(16)))),
1410 side_field_s32("s32base2", side_attr_list(side_attr("std.integer.base", side_attr_u8(2)))),
1411 side_field_s32("s32base8", side_attr_list(side_attr("std.integer.base", side_attr_u8(8)))),
1412 side_field_s32("s32base10", side_attr_list(side_attr("std.integer.base", side_attr_u8(10)))),
1413 side_field_s32("s32base16", side_attr_list(side_attr("std.integer.base", side_attr_u8(16)))),
1414 side_field_s64("s64base2", side_attr_list(side_attr("std.integer.base", side_attr_u8(2)))),
1415 side_field_s64("s64base8", side_attr_list(side_attr("std.integer.base", side_attr_u8(8)))),
1416 side_field_s64("s64base10", side_attr_list(side_attr("std.integer.base", side_attr_u8(10)))),
1417 side_field_s64("s64base16", side_attr_list(side_attr("std.integer.base", side_attr_u8(16)))),
1418 ),
1419 side_attr_list()
1420);
1421
1422static
1423void test_base(void)
1424{
1425 side_event(my_provider_event_base,
1426 side_arg_list(
1427 side_arg_u8(55),
1428 side_arg_u8(55),
1429 side_arg_u8(55),
1430 side_arg_u8(55),
1431 side_arg_u16(55),
1432 side_arg_u16(55),
1433 side_arg_u16(55),
1434 side_arg_u16(55),
1435 side_arg_u32(55),
1436 side_arg_u32(55),
1437 side_arg_u32(55),
1438 side_arg_u32(55),
1439 side_arg_u64(55),
1440 side_arg_u64(55),
1441 side_arg_u64(55),
1442 side_arg_u64(55),
1443 side_arg_s8(-55),
1444 side_arg_s8(-55),
1445 side_arg_s8(-55),
1446 side_arg_s8(-55),
1447 side_arg_s16(-55),
1448 side_arg_s16(-55),
1449 side_arg_s16(-55),
1450 side_arg_s16(-55),
1451 side_arg_s32(-55),
1452 side_arg_s32(-55),
1453 side_arg_s32(-55),
1454 side_arg_s32(-55),
1455 side_arg_s64(-55),
1456 side_arg_s64(-55),
1457 side_arg_s64(-55),
1458 side_arg_s64(-55),
1459 )
1460 );
1461}
1462
7a1cb105
MD
1463struct test {
1464 uint32_t a;
1465 uint64_t b;
1466 uint8_t c;
1467 int32_t d;
1468 uint16_t e;
bc0b21eb
MD
1469 int8_t f;
1470 int16_t g;
1471 int32_t h;
1472 int64_t i;
1473 int64_t j;
1474 int64_t k;
7a1cb105
MD
1475};
1476
33956c71
MD
1477static side_define_struct(mystructsgdef,
1478 side_field_list(
8e87e437
MD
1479 side_field_sg_unsigned_integer("a", offsetof(struct test, a),
1480 side_struct_field_sizeof_bit(struct test, a), 0,
1481 side_struct_field_sizeof_bit(struct test, a), side_attr_list()),
1482 side_field_sg_signed_integer("d", offsetof(struct test, d),
1483 side_struct_field_sizeof_bit(struct test, d), 0,
1484 side_struct_field_sizeof_bit(struct test, d), side_attr_list()),
1485 side_field_sg_unsigned_integer("e", offsetof(struct test, e),
1486 side_struct_field_sizeof_bit(struct test, e), 8, 4,
7a1cb105 1487 side_attr_list(side_attr("std.integer.base", side_attr_u8(16)))),
bc0b21eb
MD
1488 side_field_sg_signed_integer("f", offsetof(struct test, f),
1489 side_struct_field_sizeof_bit(struct test, f), 1, 4,
1490 side_attr_list(side_attr("std.integer.base", side_attr_u8(10)))),
1491 side_field_sg_signed_integer("g", offsetof(struct test, g),
1492 side_struct_field_sizeof_bit(struct test, g), 11, 4,
1493 side_attr_list(side_attr("std.integer.base", side_attr_u8(10)))),
1494 side_field_sg_signed_integer("h", offsetof(struct test, h),
1495 side_struct_field_sizeof_bit(struct test, h), 1, 31,
1496 side_attr_list(side_attr("std.integer.base", side_attr_u8(10)))),
1497 side_field_sg_signed_integer("i", offsetof(struct test, i),
1498 side_struct_field_sizeof_bit(struct test, i), 33, 20,
1499 side_attr_list(side_attr("std.integer.base", side_attr_u8(10)))),
1500 side_field_sg_signed_integer("j", offsetof(struct test, j),
1501 side_struct_field_sizeof_bit(struct test, j), 63, 1,
1502 side_attr_list(side_attr("std.integer.base", side_attr_u8(10)))),
1503 side_field_sg_signed_integer("k", offsetof(struct test, k),
1504 side_struct_field_sizeof_bit(struct test, k), 1, 63,
1505 side_attr_list(side_attr("std.integer.base", side_attr_u8(10)))),
7a1cb105
MD
1506 ),
1507 side_attr_list()
1508);
1509
1510side_static_event(my_provider_event_structsg, "myprovider", "myeventstructsg", SIDE_LOGLEVEL_DEBUG,
1511 side_field_list(
33956c71
MD
1512 side_field_struct_sg("structsg", &mystructsgdef, 0),
1513 side_field_sg_signed_integer("intsg", 0, 32, 0, 32,
1514 side_attr_list(side_attr("std.integer.base", side_attr_u8(10)))),
7a1cb105
MD
1515 ),
1516 side_attr_list()
1517);
1518
1519static
1520void test_struct_sg(void)
1521{
1522 side_event_cond(my_provider_event_structsg) {
1523 struct test mystruct = {
1524 .a = 55,
1525 .b = 123,
1526 .c = 2,
1527 .d = -55,
1528 .e = 0xABCD,
bc0b21eb
MD
1529 .f = -1,
1530 .g = -1,
1531 .h = -1,
1532 .i = -1,
1533 .j = -1,
1534 .k = -1,
7a1cb105 1535 };
33956c71
MD
1536 int32_t val = -66;
1537 side_event_call(my_provider_event_structsg,
1538 side_arg_list(
1539 side_arg_struct_sg(&mystruct),
1540 side_arg_signed_integer_sg(&val),
1541 )
1542 );
7a1cb105
MD
1543 }
1544}
1545
7394a8b8
MD
1546struct testnest2 {
1547 uint8_t c;
1548};
1549
1550struct testnest1 {
1551 uint64_t b;
1552 struct testnest2 *nest;
1553};
1554
1555struct testnest0 {
1556 uint32_t a;
1557 struct testnest1 *nest;
1558};
1559
1560static side_define_struct(mystructsgnest2,
1561 side_field_list(
1562 side_field_sg_unsigned_integer("c", offsetof(struct testnest2, c),
1563 side_struct_field_sizeof_bit(struct testnest2, c), 0,
1564 side_struct_field_sizeof_bit(struct testnest2, c), side_attr_list()),
1565 ),
1566 side_attr_list()
1567);
1568
1569static side_define_struct(mystructsgnest1,
1570 side_field_list(
1571 side_field_sg_unsigned_integer("b", offsetof(struct testnest1, b),
1572 side_struct_field_sizeof_bit(struct testnest1, b), 0,
1573 side_struct_field_sizeof_bit(struct testnest1, b), side_attr_list()),
1574 side_field_struct_sg("nest2", &mystructsgnest2,
1575 offsetof(struct testnest1, nest)),
1576 ),
1577 side_attr_list()
1578);
1579
1580static side_define_struct(mystructsgnest0,
1581 side_field_list(
1582 side_field_sg_unsigned_integer("a", offsetof(struct testnest0, a),
1583 side_struct_field_sizeof_bit(struct testnest0, a), 0,
1584 side_struct_field_sizeof_bit(struct testnest0, a), side_attr_list()),
1585 side_field_struct_sg("nest1", &mystructsgnest1,
1586 offsetof(struct testnest0, nest)),
1587 ),
1588 side_attr_list()
1589);
1590
1591side_static_event(my_provider_event_structsg_nest,
1592 "myprovider", "myeventstructsgnest", SIDE_LOGLEVEL_DEBUG,
1593 side_field_list(
1594 side_field_struct_sg("nest0", &mystructsgnest0, 0),
1595 ),
1596 side_attr_list()
1597);
1598
1599static
1600void test_struct_sg_nest(void)
1601{
1602 side_event_cond(my_provider_event_structsg_nest) {
1603 struct testnest2 mystruct2 = {
1604 .c = 77,
1605 };
1606 struct testnest1 mystruct1 = {
1607 .b = 66,
1608 .nest = &mystruct2,
1609 };
1610 struct testnest0 mystruct = {
1611 .a = 55,
1612 .nest = &mystruct1,
1613 };
1614 side_event_call(my_provider_event_structsg_nest,
1615 side_arg_list(
1616 side_arg_struct_sg(&mystruct),
1617 )
1618 );
1619 }
1620}
1621
905f68e3
MD
1622struct testfloat {
1623#if __HAVE_FLOAT16
1624 _Float16 f16;
1625#endif
1626#if __HAVE_FLOAT32
1627 _Float32 f32;
1628#endif
1629#if __HAVE_FLOAT64
1630 _Float64 f64;
1631#endif
1632#if __HAVE_FLOAT128
1633 _Float128 f128;
1634#endif
1635};
1636
1637static side_define_struct(mystructsgfloat,
1638 side_field_list(
1639#if __HAVE_FLOAT16
1640 side_field_sg_float("f16", offsetof(struct testfloat, f16), 16,
1641 side_attr_list()),
1642#endif
1643#if __HAVE_FLOAT32
1644 side_field_sg_float("f32", offsetof(struct testfloat, f32), 32,
1645 side_attr_list()),
1646#endif
1647#if __HAVE_FLOAT64
1648 side_field_sg_float("f64", offsetof(struct testfloat, f64), 64,
1649 side_attr_list()),
1650#endif
1651#if __HAVE_FLOAT128
1652 side_field_sg_float("f128", offsetof(struct testfloat, f128), 128,
1653 side_attr_list()),
1654#endif
1655 ),
1656 side_attr_list()
1657);
1658
1659side_static_event(my_provider_event_structsgfloat,
1660 "myprovider", "myeventstructsgfloat", SIDE_LOGLEVEL_DEBUG,
1661 side_field_list(
1662 side_field_struct_sg("structsgfloat", &mystructsgfloat, 0),
1663 ),
1664 side_attr_list()
1665);
1666
1667static
1668void test_struct_sg_float(void)
1669{
1670 side_event_cond(my_provider_event_structsgfloat) {
1671 struct testfloat mystruct = {
1672#if __HAVE_FLOAT16
1673 .f16 = 1.1,
1674#endif
1675#if __HAVE_FLOAT32
1676 .f32 = 2.2,
1677#endif
1678#if __HAVE_FLOAT64
1679 .f64 = 3.3,
1680#endif
1681#if __HAVE_FLOAT128
1682 .f128 = 4.4,
1683#endif
1684 };
1685 side_event_call(my_provider_event_structsgfloat,
1686 side_arg_list(
1687 side_arg_struct_sg(&mystruct),
1688 )
1689 );
1690 }
1691}
1692
f611d0c3
MD
1693int main()
1694{
1695 test_fields();
89747802
MD
1696 test_event_hidden();
1697 test_event_export();
c7a14585 1698 test_struct_literal();
f611d0c3
MD
1699 test_struct();
1700 test_array();
1701 test_vla();
1702 test_vla_visitor();
cdd6e858 1703 test_vla_visitor_2d();
ba845af5 1704 test_array_fixint();
1533629f 1705 test_vla_fixint();
a2e2357e
MD
1706 test_dynamic_basic_type();
1707 test_dynamic_vla();
465e5e7e 1708 test_dynamic_null();
c208889e
MD
1709 test_dynamic_struct();
1710 test_dynamic_nested_struct();
1711 test_dynamic_vla_struct();
1712 test_dynamic_struct_vla();
948e3e72 1713 test_dynamic_nested_vla();
19fa6aa2 1714 test_variadic();
41c4d119 1715 test_static_variadic();
4f40d951
MD
1716 test_bool();
1717 test_dynamic_bool();
8ceca0cd 1718 test_dynamic_vla_with_visitor();
2b359235 1719 test_dynamic_struct_with_visitor();
65010f43 1720 test_event_user_attribute();
a848763d 1721 test_field_user_attribute();
808bd9bf
MD
1722 test_variadic_attr();
1723 test_variadic_vla_attr();
1724 test_variadic_struct_attr();
fb25b355
MD
1725 test_float();
1726 test_variadic_float();
79f677ba 1727 test_enum();
ea32e5fc 1728 test_enum_bitmap();
7aec0d09 1729 test_blob();
71aa8975 1730 test_fmt_string();
8bdd5c12 1731 test_endian();
1d9c515c 1732 test_base();
7a1cb105 1733 test_struct_sg();
7394a8b8 1734 test_struct_sg_nest();
905f68e3 1735 test_struct_sg_float();
f611d0c3
MD
1736 return 0;
1737}
This page took 0.107923 seconds and 4 git commands to generate.