1 // SPDX-License-Identifier: MIT
3 * Copyright 2022 Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
13 #include <side/trace.h>
16 /* User code example */
18 side_static_event(my_provider_event
, "myprovider", "myevent", SIDE_LOGLEVEL_DEBUG
,
20 side_field_u32("abc", side_attr_list()),
21 side_field_s64("def", side_attr_list()),
22 side_field_pointer("ptr", side_attr_list()),
23 side_field_dynamic("dynamic"),
24 side_field_dynamic("dynamic_pointer"),
25 side_field_null("null", side_attr_list()),
31 void test_fields(void)
36 side_event(my_provider_event
,
40 side_arg_pointer((void *) 0x1),
41 side_arg_dynamic_string("zzz", side_attr_list()),
42 side_arg_dynamic_pointer((void *) 0x1, side_attr_list()),
48 side_hidden_event(my_provider_event_hidden
, "myprovider", "myeventhidden", SIDE_LOGLEVEL_DEBUG
,
50 side_field_u32("abc", side_attr_list()),
56 void test_event_hidden(void)
58 side_event(my_provider_event_hidden
, side_arg_list(side_arg_u32(2)));
61 side_declare_event(my_provider_event_export
);
63 side_export_event(my_provider_event_export
, "myprovider", "myeventexport", SIDE_LOGLEVEL_DEBUG
,
65 side_field_u32("abc", side_attr_list()),
71 void test_event_export(void)
73 side_event(my_provider_event_export
, side_arg_list(side_arg_u32(2)));
76 side_static_event(my_provider_event_struct_literal
, "myprovider", "myeventstructliteral", SIDE_LOGLEVEL_DEBUG
,
78 side_field_struct("structliteral",
81 side_field_u32("x", side_attr_list()),
82 side_field_s64("y", side_attr_list()),
87 side_field_u8("z", side_attr_list()),
93 void test_struct_literal(void)
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)));
101 static side_define_struct(mystructdef
,
103 side_field_u32("x", side_attr_list()),
104 side_field_s64("y", side_attr_list()),
109 side_static_event(my_provider_event_struct
, "myprovider", "myeventstruct", SIDE_LOGLEVEL_DEBUG
,
111 side_field_struct("struct", &mystructdef
),
112 side_field_u8("z", side_attr_list()),
118 void test_struct(void)
120 side_event_cond(my_provider_event_struct
) {
121 side_arg_define_vec(mystruct
, side_arg_list(side_arg_u32(21), side_arg_s64(22)));
122 side_event_call(my_provider_event_struct
, side_arg_list(side_arg_struct(&mystruct
), side_arg_u8(55)));
126 side_static_event(my_provider_event_array
, "myprovider", "myarray", SIDE_LOGLEVEL_DEBUG
,
128 side_field_array("arr", side_elem(side_type_u32(side_attr_list())), 3, side_attr_list()),
129 side_field_s64("v", side_attr_list()),
135 void test_array(void)
137 side_event_cond(my_provider_event_array
) {
138 side_arg_define_vec(myarray
, side_arg_list(side_arg_u32(1), side_arg_u32(2), side_arg_u32(3)));
139 side_event_call(my_provider_event_array
, side_arg_list(side_arg_array(&myarray
), side_arg_s64(42)));
143 side_static_event(my_provider_event_vla
, "myprovider", "myvla", SIDE_LOGLEVEL_DEBUG
,
145 side_field_vla("vla", side_elem(side_type_u32(side_attr_list())), side_attr_list()),
146 side_field_s64("v", side_attr_list()),
154 side_event_cond(my_provider_event_vla
) {
155 side_arg_define_vec(myvla
, side_arg_list(side_arg_u32(1), side_arg_u32(2), side_arg_u32(3)));
156 side_event_call(my_provider_event_vla
, side_arg_list(side_arg_vla(&myvla
), side_arg_s64(42)));
160 /* 1D array visitor */
162 struct app_visitor_ctx
{
168 enum side_visitor_status
test_visitor(const struct side_tracer_visitor_ctx
*tracer_ctx
, void *_ctx
)
170 struct app_visitor_ctx
*ctx
= (struct app_visitor_ctx
*) _ctx
;
171 uint32_t length
= ctx
->length
, i
;
173 for (i
= 0; i
< length
; i
++) {
174 const struct side_arg elem
= side_arg_u32(ctx
->ptr
[i
]);
176 if (tracer_ctx
->write_elem(tracer_ctx
, &elem
) != SIDE_VISITOR_STATUS_OK
)
177 return SIDE_VISITOR_STATUS_ERROR
;
179 return SIDE_VISITOR_STATUS_OK
;
182 static uint32_t testarray
[] = { 1, 2, 3, 4, 5, 6, 7, 8 };
184 side_static_event(my_provider_event_vla_visitor
, "myprovider", "myvlavisit", SIDE_LOGLEVEL_DEBUG
,
186 side_field_vla_visitor("vlavisit", side_elem(side_type_u32(side_attr_list())), test_visitor
, side_attr_list()),
187 side_field_s64("v", side_attr_list()),
193 void test_vla_visitor(void)
195 side_event_cond(my_provider_event_vla_visitor
) {
196 struct app_visitor_ctx ctx
= {
198 .length
= SIDE_ARRAY_SIZE(testarray
),
200 side_event_call(my_provider_event_vla_visitor
, side_arg_list(side_arg_vla_visitor(&ctx
), side_arg_s64(42)));
204 /* 2D array visitor */
206 struct app_visitor_2d_inner_ctx
{
212 enum side_visitor_status
test_inner_visitor(const struct side_tracer_visitor_ctx
*tracer_ctx
, void *_ctx
)
214 struct app_visitor_2d_inner_ctx
*ctx
= (struct app_visitor_2d_inner_ctx
*) _ctx
;
215 uint32_t length
= ctx
->length
, i
;
217 for (i
= 0; i
< length
; i
++) {
218 const struct side_arg elem
= side_arg_u32(ctx
->ptr
[i
]);
220 if (tracer_ctx
->write_elem(tracer_ctx
, &elem
) != SIDE_VISITOR_STATUS_OK
)
221 return SIDE_VISITOR_STATUS_ERROR
;
223 return SIDE_VISITOR_STATUS_OK
;
226 struct app_visitor_2d_outer_ctx
{
227 const uint32_t (*ptr
)[2];
232 enum side_visitor_status
test_outer_visitor(const struct side_tracer_visitor_ctx
*tracer_ctx
, void *_ctx
)
234 struct app_visitor_2d_outer_ctx
*ctx
= (struct app_visitor_2d_outer_ctx
*) _ctx
;
235 uint32_t length
= ctx
->length
, i
;
237 for (i
= 0; i
< length
; i
++) {
238 struct app_visitor_2d_inner_ctx inner_ctx
= {
242 const struct side_arg elem
= side_arg_vla_visitor(&inner_ctx
);
243 if (tracer_ctx
->write_elem(tracer_ctx
, &elem
) != SIDE_VISITOR_STATUS_OK
)
244 return SIDE_VISITOR_STATUS_ERROR
;
246 return SIDE_VISITOR_STATUS_OK
;
249 static uint32_t testarray2d
[][2] = {
255 side_static_event(my_provider_event_vla_visitor2d
, "myprovider", "myvlavisit2d", SIDE_LOGLEVEL_DEBUG
,
257 side_field_vla_visitor("vlavisit2d",
259 side_type_vla_visitor(
260 side_elem(side_type_u32(side_attr_list())),
263 ), test_outer_visitor
, side_attr_list()),
264 side_field_s64("v", side_attr_list()),
270 void test_vla_visitor_2d(void)
272 side_event_cond(my_provider_event_vla_visitor2d
) {
273 struct app_visitor_2d_outer_ctx ctx
= {
275 .length
= SIDE_ARRAY_SIZE(testarray2d
),
277 side_event_call(my_provider_event_vla_visitor2d
, side_arg_list(side_arg_vla_visitor(&ctx
), side_arg_s64(42)));
281 static int64_t array_fixint
[] = { -444, 555, 123, 2897432587 };
283 side_static_event(my_provider_event_array_fixint
, "myprovider", "myarrayfixint", SIDE_LOGLEVEL_DEBUG
,
285 side_field_array("arrfixint", side_elem(side_type_s64(side_attr_list())), SIDE_ARRAY_SIZE(array_fixint
), side_attr_list()),
286 side_field_s64("v", side_attr_list()),
292 void test_array_fixint(void)
294 side_event(my_provider_event_array_fixint
,
295 side_arg_list(side_arg_array_s64(array_fixint
), side_arg_s64(42)));
298 static int64_t vla_fixint
[] = { -444, 555, 123, 2897432587 };
300 side_static_event(my_provider_event_vla_fixint
, "myprovider", "myvlafixint", SIDE_LOGLEVEL_DEBUG
,
302 side_field_vla("vlafixint", side_elem(side_type_s64(side_attr_list())), side_attr_list()),
303 side_field_s64("v", side_attr_list()),
309 void test_vla_fixint(void)
311 side_event(my_provider_event_vla_fixint
,
312 side_arg_list(side_arg_vla_s64(vla_fixint
, SIDE_ARRAY_SIZE(vla_fixint
)), side_arg_s64(42)));
315 side_static_event(my_provider_event_dynamic_basic
,
316 "myprovider", "mydynamicbasic", SIDE_LOGLEVEL_DEBUG
,
318 side_field_dynamic("dynamic"),
324 void test_dynamic_basic_type(void)
326 side_event(my_provider_event_dynamic_basic
,
327 side_arg_list(side_arg_dynamic_s16(-33, side_attr_list())));
330 side_static_event(my_provider_event_dynamic_vla
,
331 "myprovider", "mydynamicvla", SIDE_LOGLEVEL_DEBUG
,
333 side_field_dynamic("dynamic"),
339 void test_dynamic_vla(void)
341 side_arg_dynamic_define_vec(myvla
,
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()),
349 side_event(my_provider_event_dynamic_vla
,
350 side_arg_list(side_arg_dynamic_vla(&myvla
)));
353 side_static_event(my_provider_event_dynamic_null
,
354 "myprovider", "mydynamicnull", SIDE_LOGLEVEL_DEBUG
,
356 side_field_dynamic("dynamic"),
362 void test_dynamic_null(void)
364 side_event(my_provider_event_dynamic_null
,
365 side_arg_list(side_arg_dynamic_null(side_attr_list())));
368 side_static_event(my_provider_event_dynamic_struct
,
369 "myprovider", "mydynamicstruct", SIDE_LOGLEVEL_DEBUG
,
371 side_field_dynamic("dynamic"),
377 void test_dynamic_struct(void)
379 side_arg_dynamic_define_struct(mystruct
,
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())),
388 side_event(my_provider_event_dynamic_struct
,
389 side_arg_list(side_arg_dynamic_struct(&mystruct
)));
392 side_static_event(my_provider_event_dynamic_nested_struct
,
393 "myprovider", "mydynamicnestedstruct", SIDE_LOGLEVEL_DEBUG
,
395 side_field_dynamic("dynamic"),
401 void test_dynamic_nested_struct(void)
403 side_arg_dynamic_define_struct(nested
,
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())),
410 side_arg_dynamic_define_struct(nested2
,
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())),
417 side_arg_dynamic_define_struct(mystruct
,
419 side_arg_dynamic_field("nested", side_arg_dynamic_struct(&nested
)),
420 side_arg_dynamic_field("nested2", side_arg_dynamic_struct(&nested2
)),
424 side_event(my_provider_event_dynamic_nested_struct
,
425 side_arg_list(side_arg_dynamic_struct(&mystruct
)));
428 side_static_event(my_provider_event_dynamic_vla_struct
,
429 "myprovider", "mydynamicvlastruct", SIDE_LOGLEVEL_DEBUG
,
431 side_field_dynamic("dynamic"),
437 void test_dynamic_vla_struct(void)
439 side_arg_dynamic_define_struct(nested
,
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())),
446 side_arg_dynamic_define_vec(myvla
,
448 side_arg_dynamic_struct(&nested
),
449 side_arg_dynamic_struct(&nested
),
450 side_arg_dynamic_struct(&nested
),
451 side_arg_dynamic_struct(&nested
),
455 side_event(my_provider_event_dynamic_vla_struct
,
456 side_arg_list(side_arg_dynamic_vla(&myvla
)));
459 side_static_event(my_provider_event_dynamic_struct_vla
,
460 "myprovider", "mydynamicstructvla", SIDE_LOGLEVEL_DEBUG
,
462 side_field_dynamic("dynamic"),
468 void test_dynamic_struct_vla(void)
470 side_arg_dynamic_define_vec(myvla
,
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()),
478 side_arg_dynamic_define_vec(myvla2
,
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()),
486 side_arg_dynamic_define_struct(mystruct
,
488 side_arg_dynamic_field("a", side_arg_dynamic_vla(&myvla
)),
489 side_arg_dynamic_field("b", side_arg_dynamic_vla(&myvla2
)),
493 side_event(my_provider_event_dynamic_struct_vla
,
494 side_arg_list(side_arg_dynamic_struct(&mystruct
)));
497 side_static_event(my_provider_event_dynamic_nested_vla
,
498 "myprovider", "mydynamicnestedvla", SIDE_LOGLEVEL_DEBUG
,
500 side_field_dynamic("dynamic"),
506 void test_dynamic_nested_vla(void)
508 side_arg_dynamic_define_vec(nestedvla
,
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()),
516 side_arg_dynamic_define_vec(nestedvla2
,
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()),
524 side_arg_dynamic_define_vec(myvla
,
526 side_arg_dynamic_vla(&nestedvla
),
527 side_arg_dynamic_vla(&nestedvla2
),
531 side_event(my_provider_event_dynamic_nested_vla
,
532 side_arg_list(side_arg_dynamic_vla(&myvla
)));
535 side_static_event_variadic(my_provider_event_variadic
,
536 "myprovider", "myvariadicevent", SIDE_LOGLEVEL_DEBUG
,
542 void test_variadic(void)
544 side_event_variadic(my_provider_event_variadic
,
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())),
554 side_static_event_variadic(my_provider_event_static_variadic
,
555 "myprovider", "mystaticvariadicevent", SIDE_LOGLEVEL_DEBUG
,
557 side_field_u32("abc", side_attr_list()),
558 side_field_u16("def", side_attr_list()),
564 void test_static_variadic(void)
566 side_event_variadic(my_provider_event_static_variadic
,
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())),
579 side_static_event(my_provider_event_bool
, "myprovider", "myeventbool", SIDE_LOGLEVEL_DEBUG
,
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()),
597 uint64_t c
= 0x12345678;
603 side_event(my_provider_event_bool
,
616 side_static_event_variadic(my_provider_event_dynamic_bool
,
617 "myprovider", "mydynamicbool", SIDE_LOGLEVEL_DEBUG
,
623 void test_dynamic_bool(void)
625 side_event_variadic(my_provider_event_dynamic_bool
,
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())),
637 side_static_event(my_provider_event_dynamic_vla_visitor
,
638 "myprovider", "mydynamicvlavisitor", SIDE_LOGLEVEL_DEBUG
,
640 side_field_dynamic("dynamic"),
645 struct app_dynamic_vla_visitor_ctx
{
651 enum side_visitor_status
test_dynamic_vla_visitor(const struct side_tracer_dynamic_vla_visitor_ctx
*tracer_ctx
, void *_ctx
)
653 struct app_dynamic_vla_visitor_ctx
*ctx
= (struct app_dynamic_vla_visitor_ctx
*) _ctx
;
654 uint32_t length
= ctx
->length
, i
;
656 for (i
= 0; i
< length
; i
++) {
657 const struct side_arg elem
= side_arg_dynamic_u32(ctx
->ptr
[i
], side_attr_list());
658 if (tracer_ctx
->write_elem(tracer_ctx
, &elem
) != SIDE_VISITOR_STATUS_OK
)
659 return SIDE_VISITOR_STATUS_ERROR
;
661 return SIDE_VISITOR_STATUS_OK
;
664 static uint32_t testarray_dynamic_vla
[] = { 1, 2, 3, 4, 5, 6, 7, 8 };
667 void test_dynamic_vla_with_visitor(void)
669 side_event_cond(my_provider_event_dynamic_vla_visitor
) {
670 struct app_dynamic_vla_visitor_ctx ctx
= {
671 .ptr
= testarray_dynamic_vla
,
672 .length
= SIDE_ARRAY_SIZE(testarray_dynamic_vla
),
674 side_event_call(my_provider_event_dynamic_vla_visitor
,
676 side_arg_dynamic_vla_visitor(test_dynamic_vla_visitor
, &ctx
, side_attr_list())
682 side_static_event(my_provider_event_dynamic_struct_visitor
,
683 "myprovider", "mydynamicstructvisitor", SIDE_LOGLEVEL_DEBUG
,
685 side_field_dynamic("dynamic"),
690 struct struct_visitor_pair
{
695 struct app_dynamic_struct_visitor_ctx
{
696 const struct struct_visitor_pair
*ptr
;
701 enum side_visitor_status
test_dynamic_struct_visitor(const struct side_tracer_dynamic_struct_visitor_ctx
*tracer_ctx
, void *_ctx
)
703 struct app_dynamic_struct_visitor_ctx
*ctx
= (struct app_dynamic_struct_visitor_ctx
*) _ctx
;
704 uint32_t length
= ctx
->length
, i
;
706 for (i
= 0; i
< length
; i
++) {
707 struct side_arg_dynamic_event_field dynamic_field
= {
708 .field_name
= ctx
->ptr
[i
].name
,
709 .elem
= side_arg_dynamic_u32(ctx
->ptr
[i
].value
, side_attr_list()),
711 if (tracer_ctx
->write_field(tracer_ctx
, &dynamic_field
) != SIDE_VISITOR_STATUS_OK
)
712 return SIDE_VISITOR_STATUS_ERROR
;
714 return SIDE_VISITOR_STATUS_OK
;
717 static struct struct_visitor_pair testarray_dynamic_struct
[] = {
725 void test_dynamic_struct_with_visitor(void)
727 side_event_cond(my_provider_event_dynamic_struct_visitor
) {
728 struct app_dynamic_struct_visitor_ctx ctx
= {
729 .ptr
= testarray_dynamic_struct
,
730 .length
= SIDE_ARRAY_SIZE(testarray_dynamic_struct
),
732 side_event_call(my_provider_event_dynamic_struct_visitor
,
734 side_arg_dynamic_struct_visitor(test_dynamic_struct_visitor
, &ctx
, side_attr_list())
740 side_static_event(my_provider_event_user_attribute
, "myprovider", "myevent_user_attribute", SIDE_LOGLEVEL_DEBUG
,
742 side_field_u32("abc", side_attr_list()),
743 side_field_s64("def", side_attr_list()),
746 side_attr("user_attribute_a", side_attr_string("val1")),
747 side_attr("user_attribute_b", side_attr_string("val2")),
752 void test_event_user_attribute(void)
754 side_event(my_provider_event_user_attribute
, side_arg_list(side_arg_u32(1), side_arg_s64(2)));
757 side_static_event(my_provider_field_user_attribute
, "myprovider", "myevent_field_attribute", SIDE_LOGLEVEL_DEBUG
,
759 side_field_u32("abc",
761 side_attr("user_attribute_a", side_attr_string("val1")),
762 side_attr("user_attribute_b", side_attr_u32(2)),
765 side_field_s64("def",
767 side_attr("user_attribute_c", side_attr_string("val3")),
768 side_attr("user_attribute_d", side_attr_s64(-5)),
776 void test_field_user_attribute(void)
778 side_event(my_provider_field_user_attribute
, side_arg_list(side_arg_u32(1), side_arg_s64(2)));
781 side_static_event_variadic(my_provider_event_variadic_attr
,
782 "myprovider", "myvariadiceventattr", SIDE_LOGLEVEL_DEBUG
,
788 void test_variadic_attr(void)
790 side_event_variadic(my_provider_event_variadic_attr
,
793 side_arg_dynamic_field("a",
794 side_arg_dynamic_u32(55,
796 side_attr("user_attribute_c", side_attr_string("valX")),
797 side_attr("user_attribute_d", side_attr_u8(55)),
801 side_arg_dynamic_field("b",
802 side_arg_dynamic_s8(-4,
804 side_attr("X", side_attr_u8(1)),
805 side_attr("Y", side_attr_s8(2)),
814 side_static_event_variadic(my_provider_event_variadic_vla_attr
,
815 "myprovider", "myvariadiceventvlaattr", SIDE_LOGLEVEL_DEBUG
,
821 void test_variadic_vla_attr(void)
823 side_arg_dynamic_define_vec(myvla
,
825 side_arg_dynamic_u32(1,
827 side_attr("Z", side_attr_u8(0)),
828 side_attr("A", side_attr_u8(123)),
831 side_arg_dynamic_u32(2, side_attr_list()),
832 side_arg_dynamic_u32(3, side_attr_list()),
835 side_attr("X", side_attr_u8(1)),
836 side_attr("Y", side_attr_u8(2)),
839 side_event_variadic(my_provider_event_variadic_vla_attr
,
842 side_arg_dynamic_field("a", side_arg_dynamic_vla(&myvla
)),
848 side_static_event_variadic(my_provider_event_variadic_struct_attr
,
849 "myprovider", "myvariadiceventstructattr", SIDE_LOGLEVEL_DEBUG
,
855 void test_variadic_struct_attr(void)
857 side_event_cond(my_provider_event_variadic_struct_attr
) {
858 side_arg_dynamic_define_struct(mystruct
,
860 side_arg_dynamic_field("a",
861 side_arg_dynamic_u32(43,
863 side_attr("A", side_attr_bool(true)),
867 side_arg_dynamic_field("b", side_arg_dynamic_u8(55, side_attr_list())),
870 side_attr("X", side_attr_u8(1)),
871 side_attr("Y", side_attr_u8(2)),
874 side_event_call_variadic(my_provider_event_variadic_struct_attr
,
877 side_arg_dynamic_field("a", side_arg_dynamic_struct(&mystruct
)),
884 side_static_event(my_provider_event_float
, "myprovider", "myeventfloat", SIDE_LOGLEVEL_DEBUG
,
887 side_field_float_binary16("binary16", side_attr_list()),
888 side_field_float_binary16_le("binary16_le", side_attr_list()),
889 side_field_float_binary16_be("binary16_be", side_attr_list()),
892 side_field_float_binary32("binary32", side_attr_list()),
893 side_field_float_binary32_le("binary32_le", side_attr_list()),
894 side_field_float_binary32_be("binary32_be", side_attr_list()),
897 side_field_float_binary64("binary64", side_attr_list()),
898 side_field_float_binary64_le("binary64_le", side_attr_list()),
899 side_field_float_binary64_be("binary64_be", side_attr_list()),
902 side_field_float_binary128("binary128", side_attr_list()),
903 side_field_float_binary128_le("binary128_le", side_attr_list()),
904 side_field_float_binary128_be("binary128_be", side_attr_list()),
911 void test_float(void)
947 float16
.u
= side_bswap_16(float16
.u
);
950 float32
.u
= side_bswap_32(float32
.u
);
953 float64
.u
= side_bswap_64(float64
.u
);
956 side_bswap_128p(float128
.arr
);
959 side_event(my_provider_event_float
,
962 side_arg_float_binary16(1.1),
963 # if SIDE_FLOAT_WORD_ORDER == SIDE_LITTLE_ENDIAN
964 side_arg_float_binary16(1.1),
965 side_arg_float_binary16(float16
.f
),
967 side_arg_float_binary16(float16
.f
),
968 side_arg_float_binary16(1.1),
972 side_arg_float_binary32(2.2),
973 # if SIDE_FLOAT_WORD_ORDER == SIDE_LITTLE_ENDIAN
974 side_arg_float_binary32(2.2),
975 side_arg_float_binary32(float32
.f
),
977 side_arg_float_binary32(float32
.f
),
978 side_arg_float_binary32(2.2),
982 side_arg_float_binary64(3.3),
983 # if SIDE_FLOAT_WORD_ORDER == SIDE_LITTLE_ENDIAN
984 side_arg_float_binary64(3.3),
985 side_arg_float_binary64(float64
.f
),
987 side_arg_float_binary64(float64
.f
),
988 side_arg_float_binary64(3.3),
992 side_arg_float_binary128(4.4),
993 # if SIDE_FLOAT_WORD_ORDER == SIDE_LITTLE_ENDIAN
994 side_arg_float_binary128(4.4),
995 side_arg_float_binary128(float128
.f
),
997 side_arg_float_binary128(float128
.f
),
998 side_arg_float_binary128(4.4),
1005 side_static_event_variadic(my_provider_event_variadic_float
,
1006 "myprovider", "myvariadicfloat", SIDE_LOGLEVEL_DEBUG
,
1012 void test_variadic_float(void)
1048 float16
.u
= side_bswap_16(float16
.u
);
1051 float32
.u
= side_bswap_32(float32
.u
);
1054 float64
.u
= side_bswap_64(float64
.u
);
1057 side_bswap_128p(float128
.arr
);
1060 side_event_variadic(my_provider_event_variadic_float
,
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())),
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())),
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())),
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())),
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())),
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())),
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())),
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())),
1108 static side_define_enum(myenum
,
1109 side_enum_mapping_list(
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),
1118 side_static_event(my_provider_event_enum
, "myprovider", "myeventenum", SIDE_LOGLEVEL_DEBUG
,
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()))),
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()))),
1131 void test_enum(void)
1133 side_event(my_provider_event_enum
,
1139 #if SIDE_BYTE_ORDER == SIDE_LITTLE_ENDIAN
1140 side_arg_u32(side_bswap_32(6)),
1143 side_arg_u32(side_bswap_32(6)),
1150 /* A bitmap enum maps bits to labels. */
1151 static 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),
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),
1166 side_static_event(my_provider_event_enum_bitmap
, "myprovider", "myeventenumbitmap", SIDE_LOGLEVEL_DEBUG
,
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()))),
1176 side_field_enum_bitmap("byte_bit_2", &myenum_bitmap
, side_elem(side_type_byte(side_attr_list()))),
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()))),
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()))),
1188 void test_enum_bitmap(void)
1190 side_event_cond(my_provider_event_enum_bitmap
) {
1191 side_arg_define_vec(myarray
,
1197 side_arg_u32(0x80000000), /* bit 159 */
1200 side_event_call(my_provider_event_enum_bitmap
,
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)),
1210 side_arg_byte(1 << 2),
1211 side_arg_array(&myarray
),
1212 side_arg_vla(&myarray
),
1213 #if SIDE_BYTE_ORDER == SIDE_LITTLE_ENDIAN
1214 side_arg_u32(side_bswap_32(1 << 2)),
1215 side_arg_u32(1 << 2),
1217 side_arg_u32(0x06000000),
1218 side_arg_u32(side_bswap_32(1 << 2)),
1225 static uint8_t blob_fixint
[] = { 0x55, 0x44, 0x33, 0x22, 0x11 };
1227 side_static_event_variadic(my_provider_event_blob
, "myprovider", "myeventblob", SIDE_LOGLEVEL_DEBUG
,
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()),
1238 void test_blob(void)
1240 side_event_cond(my_provider_event_blob
) {
1241 side_arg_define_vec(myarray
, side_arg_list(side_arg_byte(1), side_arg_byte(2), side_arg_byte(3)));
1242 side_arg_dynamic_define_vec(myvla
,
1244 side_arg_dynamic_byte(0x22, side_attr_list()),
1245 side_arg_dynamic_byte(0x33, side_attr_list()),
1249 side_event_call_variadic(my_provider_event_blob
,
1251 side_arg_byte(0x55),
1252 side_arg_array(&myarray
),
1253 side_arg_array_byte(blob_fixint
),
1254 side_arg_vla_byte(blob_fixint
, SIDE_ARRAY_SIZE(blob_fixint
)),
1257 side_arg_dynamic_field("varblobfield",
1258 side_arg_dynamic_byte(0x55, side_attr_list())
1260 side_arg_dynamic_field("varblobvla", side_arg_dynamic_vla(&myvla
)),
1267 side_static_event_variadic(my_provider_event_format_string
,
1268 "myprovider", "myeventformatstring", SIDE_LOGLEVEL_DEBUG
,
1270 side_field_string("fmt", side_attr_list()),
1273 side_attr("lang.c.format_string", side_attr_bool(true)),
1278 void test_fmt_string(void)
1280 side_event_cond(my_provider_event_format_string
) {
1281 side_arg_dynamic_define_vec(args
,
1283 side_arg_dynamic_string("blah", side_attr_list()),
1284 side_arg_dynamic_s32(123, side_attr_list()),
1288 side_event_call_variadic(my_provider_event_format_string
,
1290 side_arg_string("This is a formatted string with str: %s int: %d"),
1293 side_arg_dynamic_field("arguments", side_arg_dynamic_vla(&args
)),
1300 side_static_event_variadic(my_provider_event_endian
, "myprovider", "myevent_endian", SIDE_LOGLEVEL_DEBUG
,
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()),
1319 void test_endian(void)
1321 side_event_variadic(my_provider_event_endian
,
1323 #if SIDE_BYTE_ORDER == SIDE_LITTLE_ENDIAN
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)),
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)),
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())),
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())),
1384 side_static_event(my_provider_event_base
, "myprovider", "myevent_base", SIDE_LOGLEVEL_DEBUG
,
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)))),
1423 void test_base(void)
1425 side_event(my_provider_event_base
,
1478 static side_define_struct(mystructsgdef
,
1480 side_field_sg_unsigned_integer("a", offsetof(struct test
, a
),
1481 side_struct_field_sizeof_bit(struct test
, a
), 0,
1482 side_struct_field_sizeof_bit(struct test
, a
), side_attr_list()),
1483 side_field_sg_signed_integer("d", offsetof(struct test
, d
),
1484 side_struct_field_sizeof_bit(struct test
, d
), 0,
1485 side_struct_field_sizeof_bit(struct test
, d
), side_attr_list()),
1486 side_field_sg_unsigned_integer("e", offsetof(struct test
, e
),
1487 side_struct_field_sizeof_bit(struct test
, e
), 8, 4,
1488 side_attr_list(side_attr("std.integer.base", side_attr_u8(16)))),
1489 side_field_sg_signed_integer("f", offsetof(struct test
, f
),
1490 side_struct_field_sizeof_bit(struct test
, f
), 1, 4,
1491 side_attr_list(side_attr("std.integer.base", side_attr_u8(10)))),
1492 side_field_sg_signed_integer("g", offsetof(struct test
, g
),
1493 side_struct_field_sizeof_bit(struct test
, g
), 11, 4,
1494 side_attr_list(side_attr("std.integer.base", side_attr_u8(10)))),
1495 side_field_sg_signed_integer("h", offsetof(struct test
, h
),
1496 side_struct_field_sizeof_bit(struct test
, h
), 1, 31,
1497 side_attr_list(side_attr("std.integer.base", side_attr_u8(10)))),
1498 side_field_sg_signed_integer("i", offsetof(struct test
, i
),
1499 side_struct_field_sizeof_bit(struct test
, i
), 33, 20,
1500 side_attr_list(side_attr("std.integer.base", side_attr_u8(10)))),
1501 side_field_sg_signed_integer("j", offsetof(struct test
, j
),
1502 side_struct_field_sizeof_bit(struct test
, j
), 63, 1,
1503 side_attr_list(side_attr("std.integer.base", side_attr_u8(10)))),
1504 side_field_sg_signed_integer("k", offsetof(struct test
, k
),
1505 side_struct_field_sizeof_bit(struct test
, k
), 1, 63,
1506 side_attr_list(side_attr("std.integer.base", side_attr_u8(10)))),
1507 side_field_sg_unsigned_integer_le("test", offsetof(struct test
, test
),
1508 side_struct_field_sizeof_bit(struct test
, test
), 0, 64,
1509 side_attr_list(side_attr("std.integer.base", side_attr_u8(16)))),
1510 side_field_sg_unsigned_integer_le("test_le", offsetof(struct test
, test
),
1511 side_struct_field_sizeof_bit(struct test
, test
), 0, 64,
1512 side_attr_list(side_attr("std.integer.base", side_attr_u8(16)))),
1513 side_field_sg_unsigned_integer_be("test_be", offsetof(struct test
, test
),
1514 side_struct_field_sizeof_bit(struct test
, test
), 0, 64,
1515 side_attr_list(side_attr("std.integer.base", side_attr_u8(16)))),
1520 side_static_event(my_provider_event_structsg
, "myprovider", "myeventstructsg", SIDE_LOGLEVEL_DEBUG
,
1522 side_field_sg_struct("structsg", &mystructsgdef
, 0),
1523 side_field_sg_signed_integer("intsg", 0, 32, 0, 32,
1524 side_attr_list(side_attr("std.integer.base", side_attr_u8(10)))),
1526 side_field_sg_float("f32", 0, 32, side_attr_list()),
1533 void test_struct_sg(void)
1535 side_event_cond(my_provider_event_structsg
) {
1536 struct test mystruct
= {
1554 side_event_call(my_provider_event_structsg
,
1556 side_arg_sg_struct(&mystruct
),
1557 side_arg_sg_signed_integer(&val
),
1559 side_arg_sg_float(&f32
),
1572 struct testnest2
*nest
;
1577 struct testnest1
*nest
;
1580 static side_define_struct(mystructsgnest2
,
1582 side_field_sg_unsigned_integer("c", offsetof(struct testnest2
, c
),
1583 side_struct_field_sizeof_bit(struct testnest2
, c
), 0,
1584 side_struct_field_sizeof_bit(struct testnest2
, c
), side_attr_list()),
1589 static side_define_struct(mystructsgnest1
,
1591 side_field_sg_unsigned_integer("b", offsetof(struct testnest1
, b
),
1592 side_struct_field_sizeof_bit(struct testnest1
, b
), 0,
1593 side_struct_field_sizeof_bit(struct testnest1
, b
), side_attr_list()),
1594 side_field_sg_struct("nest2", &mystructsgnest2
,
1595 offsetof(struct testnest1
, nest
)),
1600 static side_define_struct(mystructsgnest0
,
1602 side_field_sg_unsigned_integer("a", offsetof(struct testnest0
, a
),
1603 side_struct_field_sizeof_bit(struct testnest0
, a
), 0,
1604 side_struct_field_sizeof_bit(struct testnest0
, a
), side_attr_list()),
1605 side_field_sg_struct("nest1", &mystructsgnest1
,
1606 offsetof(struct testnest0
, nest
)),
1611 side_static_event(my_provider_event_structsg_nest
,
1612 "myprovider", "myeventstructsgnest", SIDE_LOGLEVEL_DEBUG
,
1614 side_field_sg_struct("nest0", &mystructsgnest0
, 0),
1620 void test_struct_sg_nest(void)
1622 side_event_cond(my_provider_event_structsg_nest
) {
1623 struct testnest2 mystruct2
= {
1626 struct testnest1 mystruct1
= {
1630 struct testnest0 mystruct
= {
1634 side_event_call(my_provider_event_structsg_nest
,
1636 side_arg_sg_struct(&mystruct
),
1657 static side_define_struct(mystructsgfloat
,
1660 side_field_sg_float("f16", offsetof(struct testfloat
, f16
), 16,
1664 side_field_sg_float("f32", offsetof(struct testfloat
, f32
), 32,
1668 side_field_sg_float("f64", offsetof(struct testfloat
, f64
), 64,
1672 side_field_sg_float("f128", offsetof(struct testfloat
, f128
), 128,
1679 side_static_event(my_provider_event_structsgfloat
,
1680 "myprovider", "myeventstructsgfloat", SIDE_LOGLEVEL_DEBUG
,
1682 side_field_sg_struct("structsgfloat", &mystructsgfloat
, 0),
1688 void test_struct_sg_float(void)
1690 side_event_cond(my_provider_event_structsgfloat
) {
1691 struct testfloat mystruct
= {
1705 side_event_call(my_provider_event_structsgfloat
,
1707 side_arg_sg_struct(&mystruct
),
1716 test_event_hidden();
1717 test_event_export();
1718 test_struct_literal();
1723 test_vla_visitor_2d();
1724 test_array_fixint();
1726 test_dynamic_basic_type();
1728 test_dynamic_null();
1729 test_dynamic_struct();
1730 test_dynamic_nested_struct();
1731 test_dynamic_vla_struct();
1732 test_dynamic_struct_vla();
1733 test_dynamic_nested_vla();
1735 test_static_variadic();
1737 test_dynamic_bool();
1738 test_dynamic_vla_with_visitor();
1739 test_dynamic_struct_with_visitor();
1740 test_event_user_attribute();
1741 test_field_user_attribute();
1742 test_variadic_attr();
1743 test_variadic_vla_attr();
1744 test_variadic_struct_attr();
1746 test_variadic_float();
1754 test_struct_sg_nest();
1755 test_struct_sg_float();