1 // SPDX-License-Identifier: MIT
3 * Copyright 2022 Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
12 #include <side/trace.h>
15 /* User code example */
17 static side_define_event(my_provider_event
, "myprovider", "myevent", SIDE_LOGLEVEL_DEBUG
,
19 side_field_u32("abc", side_attr_list()),
20 side_field_s64("def", side_attr_list()),
21 side_field_dynamic("dynamic", side_attr_list()),
27 void test_fields(void)
32 my_provider_event
.enabled
= 1;
33 side_event(&my_provider_event
, side_arg_list(side_arg_u32(uw
), side_arg_s64(sdw
),
34 side_arg_dynamic(side_arg_dynamic_string("zzz", side_attr_list()))));
37 static side_define_event(my_provider_event2
, "myprovider", "myevent2", SIDE_LOGLEVEL_DEBUG
,
39 side_field_struct("structfield",
41 side_field_u32("x", side_attr_list()),
42 side_field_s64("y", side_attr_list()),
46 side_field_u8("z", side_attr_list()),
52 void test_struct(void)
54 my_provider_event2
.enabled
= 1;
55 side_event_cond(&my_provider_event2
) {
56 side_arg_define_vec(mystruct
, side_arg_list(side_arg_u32(21), side_arg_s64(22)));
57 side_event_call(&my_provider_event2
, side_arg_list(side_arg_struct(&mystruct
), side_arg_u8(55)));
61 static side_define_event(my_provider_event_array
, "myprovider", "myarray", SIDE_LOGLEVEL_DEBUG
,
63 side_field_array("arr", side_elem_type(SIDE_TYPE_U32
, side_attr_list()), 3, side_attr_list()),
64 side_field_s64("v", side_attr_list()),
72 my_provider_event_array
.enabled
= 1;
73 side_event_cond(&my_provider_event_array
) {
74 side_arg_define_vec(myarray
, side_arg_list(side_arg_u32(1), side_arg_u32(2), side_arg_u32(3)));
75 side_event_call(&my_provider_event_array
, side_arg_list(side_arg_array(&myarray
), side_arg_s64(42)));
79 static side_define_event(my_provider_event_vla
, "myprovider", "myvla", SIDE_LOGLEVEL_DEBUG
,
81 side_field_vla("vla", side_elem_type(SIDE_TYPE_U32
, side_attr_list()), side_attr_list()),
82 side_field_s64("v", side_attr_list()),
90 my_provider_event_vla
.enabled
= 1;
91 side_event_cond(&my_provider_event_vla
) {
92 side_arg_define_vec(myvla
, side_arg_list(side_arg_u32(1), side_arg_u32(2), side_arg_u32(3)));
93 side_event_call(&my_provider_event_vla
, side_arg_list(side_arg_vla(&myvla
), side_arg_s64(42)));
97 /* 1D array visitor */
99 struct app_visitor_ctx
{
105 enum side_visitor_status
test_visitor(const struct side_tracer_visitor_ctx
*tracer_ctx
, void *_ctx
)
107 struct app_visitor_ctx
*ctx
= (struct app_visitor_ctx
*) _ctx
;
108 uint32_t length
= ctx
->length
, i
;
110 for (i
= 0; i
< length
; i
++) {
111 const struct side_arg_vec elem
= {
112 .type
= SIDE_TYPE_U32
,
114 .side_u32
= ctx
->ptr
[i
],
117 if (tracer_ctx
->write_elem(tracer_ctx
, &elem
) != SIDE_VISITOR_STATUS_OK
)
118 return SIDE_VISITOR_STATUS_ERROR
;
120 return SIDE_VISITOR_STATUS_OK
;
123 static uint32_t testarray
[] = { 1, 2, 3, 4, 5, 6, 7, 8 };
125 static side_define_event(my_provider_event_vla_visitor
, "myprovider", "myvlavisit", SIDE_LOGLEVEL_DEBUG
,
127 side_field_vla_visitor("vlavisit", side_elem_type(SIDE_TYPE_U32
, side_attr_list()), test_visitor
, side_attr_list()),
128 side_field_s64("v", side_attr_list()),
134 void test_vla_visitor(void)
136 my_provider_event_vla_visitor
.enabled
= 1;
137 side_event_cond(&my_provider_event_vla_visitor
) {
138 struct app_visitor_ctx ctx
= {
140 .length
= SIDE_ARRAY_SIZE(testarray
),
142 side_event_call(&my_provider_event_vla_visitor
, side_arg_list(side_arg_vla_visitor(&ctx
), side_arg_s64(42)));
146 /* 2D array visitor */
148 struct app_visitor_2d_inner_ctx
{
154 enum side_visitor_status
test_inner_visitor(const struct side_tracer_visitor_ctx
*tracer_ctx
, void *_ctx
)
156 struct app_visitor_2d_inner_ctx
*ctx
= (struct app_visitor_2d_inner_ctx
*) _ctx
;
157 uint32_t length
= ctx
->length
, i
;
159 for (i
= 0; i
< length
; i
++) {
160 const struct side_arg_vec elem
= {
161 .type
= SIDE_TYPE_U32
,
163 .side_u32
= ctx
->ptr
[i
],
166 if (tracer_ctx
->write_elem(tracer_ctx
, &elem
) != SIDE_VISITOR_STATUS_OK
)
167 return SIDE_VISITOR_STATUS_ERROR
;
169 return SIDE_VISITOR_STATUS_OK
;
172 struct app_visitor_2d_outer_ctx
{
173 const uint32_t (*ptr
)[2];
178 enum side_visitor_status
test_outer_visitor(const struct side_tracer_visitor_ctx
*tracer_ctx
, void *_ctx
)
180 struct app_visitor_2d_outer_ctx
*ctx
= (struct app_visitor_2d_outer_ctx
*) _ctx
;
181 uint32_t length
= ctx
->length
, i
;
183 for (i
= 0; i
< length
; i
++) {
184 struct app_visitor_2d_inner_ctx inner_ctx
= {
188 const struct side_arg_vec elem
= side_arg_vla_visitor(&inner_ctx
);
189 if (tracer_ctx
->write_elem(tracer_ctx
, &elem
) != SIDE_VISITOR_STATUS_OK
)
190 return SIDE_VISITOR_STATUS_ERROR
;
192 return SIDE_VISITOR_STATUS_OK
;
195 static uint32_t testarray2d
[][2] = {
201 static side_define_event(my_provider_event_vla_visitor2d
, "myprovider", "myvlavisit2d", SIDE_LOGLEVEL_DEBUG
,
203 side_field_vla_visitor("vlavisit2d",
205 side_type_vla_visitor_decl(
206 side_elem_type(SIDE_TYPE_U32
, side_attr_list()),
209 ), test_outer_visitor
, side_attr_list()),
210 side_field_s64("v", side_attr_list()),
216 void test_vla_visitor_2d(void)
218 my_provider_event_vla_visitor2d
.enabled
= 1;
219 side_event_cond(&my_provider_event_vla_visitor2d
) {
220 struct app_visitor_2d_outer_ctx ctx
= {
222 .length
= SIDE_ARRAY_SIZE(testarray2d
),
224 side_event_call(&my_provider_event_vla_visitor2d
, side_arg_list(side_arg_vla_visitor(&ctx
), side_arg_s64(42)));
228 static int64_t array_fixint
[] = { -444, 555, 123, 2897432587 };
230 static side_define_event(my_provider_event_array_fixint
, "myprovider", "myarrayfixint", SIDE_LOGLEVEL_DEBUG
,
232 side_field_array("arrfixint", side_elem_type(SIDE_TYPE_S64
, side_attr_list()), SIDE_ARRAY_SIZE(array_fixint
), side_attr_list()),
233 side_field_s64("v", side_attr_list()),
239 void test_array_fixint(void)
241 my_provider_event_array_fixint
.enabled
= 1;
242 side_event(&my_provider_event_array_fixint
,
243 side_arg_list(side_arg_array_s64(array_fixint
), side_arg_s64(42)));
246 static int64_t vla_fixint
[] = { -444, 555, 123, 2897432587 };
248 static side_define_event(my_provider_event_vla_fixint
, "myprovider", "myvlafixint", SIDE_LOGLEVEL_DEBUG
,
250 side_field_vla("vlafixint", side_elem_type(SIDE_TYPE_S64
, side_attr_list()), side_attr_list()),
251 side_field_s64("v", side_attr_list()),
257 void test_vla_fixint(void)
259 my_provider_event_vla_fixint
.enabled
= 1;
260 side_event(&my_provider_event_vla_fixint
,
261 side_arg_list(side_arg_vla_s64(vla_fixint
, SIDE_ARRAY_SIZE(vla_fixint
)), side_arg_s64(42)));
264 static side_define_event(my_provider_event_dynamic_basic
,
265 "myprovider", "mydynamicbasic", SIDE_LOGLEVEL_DEBUG
,
267 side_field_dynamic("dynamic", side_attr_list()),
273 void test_dynamic_basic_type(void)
275 my_provider_event_dynamic_basic
.enabled
= 1;
276 side_event(&my_provider_event_dynamic_basic
,
277 side_arg_list(side_arg_dynamic(side_arg_dynamic_s16(-33, side_attr_list()))));
280 static side_define_event(my_provider_event_dynamic_vla
,
281 "myprovider", "mydynamicvla", SIDE_LOGLEVEL_DEBUG
,
283 side_field_dynamic("dynamic", side_attr_list()),
289 void test_dynamic_vla(void)
291 side_arg_dynamic_define_vec(myvla
,
293 side_arg_dynamic_u32(1, side_attr_list()),
294 side_arg_dynamic_u32(2, side_attr_list()),
295 side_arg_dynamic_u32(3, side_attr_list()),
298 my_provider_event_dynamic_vla
.enabled
= 1;
299 side_event(&my_provider_event_dynamic_vla
,
300 side_arg_list(side_arg_dynamic(side_arg_dynamic_vla(&myvla
, side_attr_list()))));
303 static side_define_event(my_provider_event_dynamic_null
,
304 "myprovider", "mydynamicnull", SIDE_LOGLEVEL_DEBUG
,
306 side_field_dynamic("dynamic", side_attr_list()),
312 void test_dynamic_null(void)
314 my_provider_event_dynamic_null
.enabled
= 1;
315 side_event(&my_provider_event_dynamic_null
,
316 side_arg_list(side_arg_dynamic(side_arg_dynamic_null(side_attr_list()))));
319 static side_define_event(my_provider_event_dynamic_struct
,
320 "myprovider", "mydynamicstruct", SIDE_LOGLEVEL_DEBUG
,
322 side_field_dynamic("dynamic", side_attr_list()),
328 void test_dynamic_struct(void)
330 side_arg_dynamic_define_struct(mystruct
,
332 side_arg_dynamic_field("a", side_arg_dynamic_u32(43, side_attr_list())),
333 side_arg_dynamic_field("b", side_arg_dynamic_string("zzz", side_attr_list())),
334 side_arg_dynamic_field("c", side_arg_dynamic_null(side_attr_list())),
338 my_provider_event_dynamic_struct
.enabled
= 1;
339 side_event(&my_provider_event_dynamic_struct
,
340 side_arg_list(side_arg_dynamic(side_arg_dynamic_struct(&mystruct
, side_attr_list()))));
343 static side_define_event(my_provider_event_dynamic_nested_struct
,
344 "myprovider", "mydynamicnestedstruct", SIDE_LOGLEVEL_DEBUG
,
346 side_field_dynamic("dynamic", side_attr_list()),
352 void test_dynamic_nested_struct(void)
354 side_arg_dynamic_define_struct(nested
,
356 side_arg_dynamic_field("a", side_arg_dynamic_u32(43, side_attr_list())),
357 side_arg_dynamic_field("b", side_arg_dynamic_u8(55, side_attr_list())),
360 side_arg_dynamic_define_struct(nested2
,
362 side_arg_dynamic_field("aa", side_arg_dynamic_u64(128, side_attr_list())),
363 side_arg_dynamic_field("bb", side_arg_dynamic_u16(1, side_attr_list())),
366 side_arg_dynamic_define_struct(mystruct
,
368 side_arg_dynamic_field("nested", side_arg_dynamic_struct(&nested
, side_attr_list())),
369 side_arg_dynamic_field("nested2", side_arg_dynamic_struct(&nested2
, side_attr_list())),
372 my_provider_event_dynamic_nested_struct
.enabled
= 1;
373 side_event(&my_provider_event_dynamic_nested_struct
,
374 side_arg_list(side_arg_dynamic(side_arg_dynamic_struct(&mystruct
, side_attr_list()))));
377 static side_define_event(my_provider_event_dynamic_vla_struct
,
378 "myprovider", "mydynamicvlastruct", SIDE_LOGLEVEL_DEBUG
,
380 side_field_dynamic("dynamic", side_attr_list()),
386 void test_dynamic_vla_struct(void)
388 side_arg_dynamic_define_struct(nested
,
390 side_arg_dynamic_field("a", side_arg_dynamic_u32(43, side_attr_list())),
391 side_arg_dynamic_field("b", side_arg_dynamic_u8(55, side_attr_list())),
394 side_arg_dynamic_define_vec(myvla
,
396 side_arg_dynamic_struct(&nested
, side_attr_list()),
397 side_arg_dynamic_struct(&nested
, side_attr_list()),
398 side_arg_dynamic_struct(&nested
, side_attr_list()),
399 side_arg_dynamic_struct(&nested
, side_attr_list()),
402 my_provider_event_dynamic_vla_struct
.enabled
= 1;
403 side_event(&my_provider_event_dynamic_vla_struct
,
404 side_arg_list(side_arg_dynamic(side_arg_dynamic_vla(&myvla
, side_attr_list()))));
407 static side_define_event(my_provider_event_dynamic_struct_vla
,
408 "myprovider", "mydynamicstructvla", SIDE_LOGLEVEL_DEBUG
,
410 side_field_dynamic("dynamic", side_attr_list()),
416 void test_dynamic_struct_vla(void)
418 side_arg_dynamic_define_vec(myvla
,
420 side_arg_dynamic_u32(1, side_attr_list()),
421 side_arg_dynamic_u32(2, side_attr_list()),
422 side_arg_dynamic_u32(3, side_attr_list()),
425 side_arg_dynamic_define_vec(myvla2
,
427 side_arg_dynamic_u32(4, side_attr_list()),
428 side_arg_dynamic_u64(5, side_attr_list()),
429 side_arg_dynamic_u32(6, side_attr_list()),
432 side_arg_dynamic_define_struct(mystruct
,
434 side_arg_dynamic_field("a", side_arg_dynamic_vla(&myvla
, side_attr_list())),
435 side_arg_dynamic_field("b", side_arg_dynamic_vla(&myvla2
, side_attr_list())),
438 my_provider_event_dynamic_struct_vla
.enabled
= 1;
439 side_event(&my_provider_event_dynamic_struct_vla
,
440 side_arg_list(side_arg_dynamic(side_arg_dynamic_struct(&mystruct
, side_attr_list()))));
443 static side_define_event(my_provider_event_dynamic_nested_vla
,
444 "myprovider", "mydynamicnestedvla", SIDE_LOGLEVEL_DEBUG
,
446 side_field_dynamic("dynamic", side_attr_list()),
452 void test_dynamic_nested_vla(void)
454 side_arg_dynamic_define_vec(nestedvla
,
456 side_arg_dynamic_u32(1, side_attr_list()),
457 side_arg_dynamic_u16(2, side_attr_list()),
458 side_arg_dynamic_u32(3, side_attr_list()),
461 side_arg_dynamic_define_vec(nestedvla2
,
463 side_arg_dynamic_u8(4, side_attr_list()),
464 side_arg_dynamic_u32(5, side_attr_list()),
465 side_arg_dynamic_u32(6, side_attr_list()),
468 side_arg_dynamic_define_vec(myvla
,
470 side_arg_dynamic_vla(&nestedvla
, side_attr_list()),
471 side_arg_dynamic_vla(&nestedvla2
, side_attr_list()),
474 my_provider_event_dynamic_nested_vla
.enabled
= 1;
475 side_event(&my_provider_event_dynamic_nested_vla
,
476 side_arg_list(side_arg_dynamic(side_arg_dynamic_vla(&myvla
, side_attr_list()))));
479 static side_define_event_variadic(my_provider_event_variadic
,
480 "myprovider", "myvariadicevent", SIDE_LOGLEVEL_DEBUG
,
486 void test_variadic(void)
488 my_provider_event_variadic
.enabled
= 1;
489 side_event_variadic(&my_provider_event_variadic
,
492 side_arg_dynamic_field("a", side_arg_dynamic_u32(55, side_attr_list())),
493 side_arg_dynamic_field("b", side_arg_dynamic_s8(-4, side_attr_list())),
498 static side_define_event_variadic(my_provider_event_static_variadic
,
499 "myprovider", "mystaticvariadicevent", SIDE_LOGLEVEL_DEBUG
,
501 side_field_u32("abc", side_attr_list()),
502 side_field_u16("def", side_attr_list()),
508 void test_static_variadic(void)
510 my_provider_event_static_variadic
.enabled
= 1;
511 side_event_variadic(&my_provider_event_static_variadic
,
517 side_arg_dynamic_field("a", side_arg_dynamic_u32(55, side_attr_list())),
518 side_arg_dynamic_field("b", side_arg_dynamic_s8(-4, side_attr_list())),
523 static side_define_event(my_provider_event_bool
, "myprovider", "myeventbool", SIDE_LOGLEVEL_DEBUG
,
525 side_field_bool("a_false", side_attr_list()),
526 side_field_bool("b_true", side_attr_list()),
527 side_field_bool("c_true", side_attr_list()),
528 side_field_bool("d_true", side_attr_list()),
529 side_field_bool("e_true", side_attr_list()),
530 side_field_bool("f_false", side_attr_list()),
531 side_field_bool("g_true", side_attr_list()),
541 uint64_t c
= 0x12345678;
547 my_provider_event_bool
.enabled
= 1;
548 side_event(&my_provider_event_bool
,
561 static side_define_event_variadic(my_provider_event_dynamic_bool
,
562 "myprovider", "mydynamicbool", SIDE_LOGLEVEL_DEBUG
,
568 void test_dynamic_bool(void)
570 my_provider_event_dynamic_bool
.enabled
= 1;
571 side_event_variadic(&my_provider_event_dynamic_bool
,
574 side_arg_dynamic_field("a_true", side_arg_dynamic_bool(55, side_attr_list())),
575 side_arg_dynamic_field("b_true", side_arg_dynamic_bool(-4, side_attr_list())),
576 side_arg_dynamic_field("c_false", side_arg_dynamic_bool(0, side_attr_list())),
577 side_arg_dynamic_field("d_true", side_arg_dynamic_bool(256, side_attr_list())),
582 static side_define_event(my_provider_event_dynamic_vla_visitor
,
583 "myprovider", "mydynamicvlavisitor", SIDE_LOGLEVEL_DEBUG
,
585 side_field_dynamic("dynamic", side_attr_list()),
590 struct app_dynamic_vla_visitor_ctx
{
596 enum side_visitor_status
test_dynamic_vla_visitor(const struct side_tracer_dynamic_vla_visitor_ctx
*tracer_ctx
, void *_ctx
)
598 struct app_dynamic_vla_visitor_ctx
*ctx
= (struct app_dynamic_vla_visitor_ctx
*) _ctx
;
599 uint32_t length
= ctx
->length
, i
;
601 for (i
= 0; i
< length
; i
++) {
602 const struct side_arg_dynamic_vec elem
= {
603 .dynamic_type
= SIDE_DYNAMIC_TYPE_U32
,
607 .side_u32
= ctx
->ptr
[i
],
610 if (tracer_ctx
->write_elem(tracer_ctx
, &elem
) != SIDE_VISITOR_STATUS_OK
)
611 return SIDE_VISITOR_STATUS_ERROR
;
613 return SIDE_VISITOR_STATUS_OK
;
616 static uint32_t testarray_dynamic_vla
[] = { 1, 2, 3, 4, 5, 6, 7, 8 };
619 void test_dynamic_vla_with_visitor(void)
621 my_provider_event_dynamic_vla_visitor
.enabled
= 1;
622 side_event_cond(&my_provider_event_dynamic_vla_visitor
) {
623 struct app_dynamic_vla_visitor_ctx ctx
= {
624 .ptr
= testarray_dynamic_vla
,
625 .length
= SIDE_ARRAY_SIZE(testarray_dynamic_vla
),
627 side_event_call(&my_provider_event_dynamic_vla_visitor
,
630 side_arg_dynamic_vla_visitor(test_dynamic_vla_visitor
, &ctx
, side_attr_list())
637 static side_define_event(my_provider_event_dynamic_struct_visitor
,
638 "myprovider", "mydynamicstructvisitor", SIDE_LOGLEVEL_DEBUG
,
640 side_field_dynamic("dynamic", side_attr_list()),
645 struct struct_visitor_pair
{
650 struct app_dynamic_struct_visitor_ctx
{
651 const struct struct_visitor_pair
*ptr
;
656 enum side_visitor_status
test_dynamic_struct_visitor(const struct side_tracer_dynamic_struct_visitor_ctx
*tracer_ctx
, void *_ctx
)
658 struct app_dynamic_struct_visitor_ctx
*ctx
= (struct app_dynamic_struct_visitor_ctx
*) _ctx
;
659 uint32_t length
= ctx
->length
, i
;
661 for (i
= 0; i
< length
; i
++) {
662 struct side_arg_dynamic_event_field dynamic_field
= {
663 .field_name
= ctx
->ptr
[i
].name
,
665 .dynamic_type
= SIDE_DYNAMIC_TYPE_U32
,
669 .side_u32
= ctx
->ptr
[i
].value
,
673 if (tracer_ctx
->write_field(tracer_ctx
, &dynamic_field
) != SIDE_VISITOR_STATUS_OK
)
674 return SIDE_VISITOR_STATUS_ERROR
;
676 return SIDE_VISITOR_STATUS_OK
;
679 static struct struct_visitor_pair testarray_dynamic_struct
[] = {
687 void test_dynamic_struct_with_visitor(void)
689 my_provider_event_dynamic_struct_visitor
.enabled
= 1;
690 side_event_cond(&my_provider_event_dynamic_struct_visitor
) {
691 struct app_dynamic_struct_visitor_ctx ctx
= {
692 .ptr
= testarray_dynamic_struct
,
693 .length
= SIDE_ARRAY_SIZE(testarray_dynamic_struct
),
695 side_event_call(&my_provider_event_dynamic_struct_visitor
,
698 side_arg_dynamic_struct_visitor(test_dynamic_struct_visitor
, &ctx
, side_attr_list())
705 static side_define_event(my_provider_event_user_attribute
, "myprovider", "myevent_user_attribute", SIDE_LOGLEVEL_DEBUG
,
707 side_field_u32("abc", side_attr_list()),
708 side_field_s64("def", side_attr_list()),
711 side_attr("user_attribute_a", side_attr_string("val1")),
712 side_attr("user_attribute_b", side_attr_string("val2")),
717 void test_event_user_attribute(void)
719 my_provider_event_user_attribute
.enabled
= 1;
720 side_event(&my_provider_event_user_attribute
, side_arg_list(side_arg_u32(1), side_arg_s64(2)));
723 static side_define_event(my_provider_field_user_attribute
, "myprovider", "myevent_field_attribute", SIDE_LOGLEVEL_DEBUG
,
725 side_field_u32("abc",
727 side_attr("user_attribute_a", side_attr_string("val1")),
728 side_attr("user_attribute_b", side_attr_u32(2)),
731 side_field_s64("def",
733 side_attr("user_attribute_c", side_attr_string("val3")),
734 side_attr("user_attribute_d", side_attr_s64(-5)),
742 void test_field_user_attribute(void)
744 my_provider_field_user_attribute
.enabled
= 1;
745 side_event(&my_provider_field_user_attribute
, side_arg_list(side_arg_u32(1), side_arg_s64(2)));
748 static side_define_event_variadic(my_provider_event_variadic_attr
,
749 "myprovider", "myvariadiceventattr", SIDE_LOGLEVEL_DEBUG
,
755 void test_variadic_attr(void)
757 my_provider_event_variadic_attr
.enabled
= 1;
758 side_event_variadic(&my_provider_event_variadic_attr
,
761 side_arg_dynamic_field("a",
762 side_arg_dynamic_u32(55,
764 side_attr("user_attribute_c", side_attr_string("valX")),
765 side_attr("user_attribute_d", side_attr_u8(55)),
769 side_arg_dynamic_field("b",
770 side_arg_dynamic_s8(-4,
772 side_attr("X", side_attr_u8(1)),
773 side_attr("Y", side_attr_s8(2)),
781 static side_define_event_variadic(my_provider_event_variadic_vla_attr
,
782 "myprovider", "myvariadiceventvlaattr", SIDE_LOGLEVEL_DEBUG
,
788 void test_variadic_vla_attr(void)
790 side_arg_dynamic_define_vec(myvla
,
792 side_arg_dynamic_u32(1,
794 side_attr("Z", side_attr_u8(0)),
795 side_attr("A", side_attr_u8(123)),
798 side_arg_dynamic_u32(2, side_attr_list()),
799 side_arg_dynamic_u32(3, side_attr_list()),
802 my_provider_event_variadic_vla_attr
.enabled
= 1;
803 side_event_variadic(&my_provider_event_variadic_vla_attr
,
806 side_arg_dynamic_field("a",
807 side_arg_dynamic_vla(&myvla
,
809 side_attr("X", side_attr_u8(1)),
810 side_attr("Y", side_attr_u8(2)),
818 static side_define_event_variadic(my_provider_event_variadic_struct_attr
,
819 "myprovider", "myvariadiceventstructattr", SIDE_LOGLEVEL_DEBUG
,
825 void test_variadic_struct_attr(void)
827 my_provider_event_variadic_struct_attr
.enabled
= 1;
828 side_event_cond(&my_provider_event_variadic_struct_attr
) {
829 side_arg_dynamic_define_struct(mystruct
,
831 side_arg_dynamic_field("a",
832 side_arg_dynamic_u32(43,
834 side_attr("A", side_attr_bool(true)),
838 side_arg_dynamic_field("b", side_arg_dynamic_u8(55, side_attr_list())),
841 side_event_call_variadic(&my_provider_event_variadic_struct_attr
,
844 side_arg_dynamic_field("a",
845 side_arg_dynamic_struct(&mystruct
,
847 side_attr("X", side_attr_u8(1)),
848 side_attr("Y", side_attr_u8(2)),
857 static side_define_event(my_provider_event_float
, "myprovider", "myeventfloat", SIDE_LOGLEVEL_DEBUG
,
860 side_field_float_binary16("binary16", side_attr_list()),
863 side_field_float_binary32("binary32", side_attr_list()),
866 side_field_float_binary64("binary64", side_attr_list()),
869 side_field_float_binary128("binary128", side_attr_list()),
876 void test_float(void)
878 my_provider_event_float
.enabled
= 1;
879 side_event(&my_provider_event_float
,
882 side_arg_float_binary16(1.1),
885 side_arg_float_binary32(2.2),
888 side_arg_float_binary64(3.3),
891 side_arg_float_binary128(4.4),
897 static side_define_event_variadic(my_provider_event_variadic_float
,
898 "myprovider", "myvariadicfloat", SIDE_LOGLEVEL_DEBUG
,
904 void test_variadic_float(void)
906 my_provider_event_variadic_float
.enabled
= 1;
907 side_event_variadic(&my_provider_event_variadic_float
,
911 side_arg_dynamic_field("binary16",
912 side_arg_dynamic_float_binary16(1.1, side_attr_list())
916 side_arg_dynamic_field("binary32",
917 side_arg_dynamic_float_binary32(2.2, side_attr_list())
921 side_arg_dynamic_field("binary64",
922 side_arg_dynamic_float_binary64(3.3, side_attr_list())
926 side_arg_dynamic_field("binary128",
927 side_arg_dynamic_float_binary128(4.4, side_attr_list())
934 static side_define_enum(myenum
,
935 side_enum_mapping_list(
936 side_enum_mapping_range("one-ten", 1, 10),
937 side_enum_mapping_range("100-200", 100, 200),
938 side_enum_mapping_value("200", 200),
939 side_enum_mapping_value("300", 300),
943 static side_define_event(my_provider_event_enum
, "myprovider", "myeventenum", SIDE_LOGLEVEL_DEBUG
,
945 side_field_enum_u32("5", &myenum
, side_attr_list()),
946 side_field_enum_u64("400", &myenum
, side_attr_list()),
947 side_field_enum_u8("200", &myenum
, side_attr_list()),
948 side_field_enum_s8("-100", &myenum
, side_attr_list()),
956 my_provider_event_enum
.enabled
= 1;
957 side_event(&my_provider_event_enum
,
959 side_arg_enum_u32(5),
960 side_arg_enum_u64(400),
961 side_arg_enum_u8(200),
962 side_arg_enum_s8(-100),
967 /* A bitmap enum maps bits to labels. */
968 static side_define_enum_bitmap(myenum_bitmap
,
969 side_enum_bitmap_mapping_list(
970 side_enum_bitmap_mapping_value("0", 0),
971 side_enum_bitmap_mapping_range("1-2", 1, 2),
972 side_enum_bitmap_mapping_range("2-4", 2, 4),
973 side_enum_bitmap_mapping_value("3", 3),
974 side_enum_bitmap_mapping_value("30", 30),
975 side_enum_bitmap_mapping_value("63", 63),
979 static side_define_event(my_provider_event_enum_bitmap
, "myprovider", "myeventenumbitmap", SIDE_LOGLEVEL_DEBUG
,
981 side_field_enum_bitmap32("bit_0", &myenum_bitmap
, side_attr_list()),
982 side_field_enum_bitmap32("bit_1", &myenum_bitmap
, side_attr_list()),
983 side_field_enum_bitmap8("bit_2", &myenum_bitmap
, side_attr_list()),
984 side_field_enum_bitmap8("bit_3", &myenum_bitmap
, side_attr_list()),
985 side_field_enum_bitmap32("bit_30", &myenum_bitmap
, side_attr_list()),
986 side_field_enum_bitmap32("bit_31", &myenum_bitmap
, side_attr_list()),
987 side_field_enum_bitmap64("bit_63", &myenum_bitmap
, side_attr_list()),
988 side_field_enum_bitmap64("bits_1+63", &myenum_bitmap
, side_attr_list()),
994 void test_enum_bitmap(void)
996 my_provider_event_enum_bitmap
.enabled
= 1;
997 side_event(&my_provider_event_enum_bitmap
,
999 side_arg_enum_bitmap32(1 << 0),
1000 side_arg_enum_bitmap32(1 << 1),
1001 side_arg_enum_bitmap8(1 << 2),
1002 side_arg_enum_bitmap8(1 << 3),
1003 side_arg_enum_bitmap32(1 << 30),
1004 side_arg_enum_bitmap32(1 << 31),
1005 side_arg_enum_bitmap64(1ULL << 63),
1006 side_arg_enum_bitmap64((1ULL << 1) | (1ULL << 63)),
1019 test_vla_visitor_2d();
1020 test_array_fixint();
1022 test_dynamic_basic_type();
1024 test_dynamic_null();
1025 test_dynamic_struct();
1026 test_dynamic_nested_struct();
1027 test_dynamic_vla_struct();
1028 test_dynamic_struct_vla();
1029 test_dynamic_nested_vla();
1031 test_static_variadic();
1033 test_dynamic_bool();
1034 test_dynamic_vla_with_visitor();
1035 test_dynamic_struct_with_visitor();
1036 test_event_user_attribute();
1037 test_field_user_attribute();
1038 test_variadic_attr();
1039 test_variadic_vla_attr();
1040 test_variadic_struct_attr();
1042 test_variadic_float();