1 // SPDX-License-Identifier: MIT
3 * Copyright 2022 Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
12 #include <side/trace.h>
15 /* User code example */
17 side_static_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 side_event_enable__my_provider_event
= 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 side_hidden_event(my_provider_event_hidden
, "myprovider", "myeventhidden", SIDE_LOGLEVEL_DEBUG
,
39 side_field_u32("abc", side_attr_list()),
45 void test_event_hidden(void)
47 side_event_enable__my_provider_event_hidden
= 1;
48 side_event(my_provider_event_hidden
, side_arg_list(side_arg_u32(2)));
51 side_declare_event(my_provider_event_export
);
53 side_export_event(my_provider_event_export
, "myprovider", "myeventexport", SIDE_LOGLEVEL_DEBUG
,
55 side_field_u32("abc", side_attr_list()),
61 void test_event_export(void)
63 side_event_enable__my_provider_event_export
= 1;
64 side_event(my_provider_event_export
, side_arg_list(side_arg_u32(2)));
67 side_static_event(my_provider_event_struct_literal
, "myprovider", "myeventstructliteral", SIDE_LOGLEVEL_DEBUG
,
69 side_field_struct("structliteral",
72 side_field_u32("x", side_attr_list()),
73 side_field_s64("y", side_attr_list()),
78 side_field_u8("z", side_attr_list()),
84 void test_struct_literal(void)
86 side_event_enable__my_provider_event_struct_literal
= 1;
87 side_event_cond(my_provider_event_struct_literal
) {
88 side_arg_define_vec(mystruct
, side_arg_list(side_arg_u32(21), side_arg_s64(22)));
89 side_event_call(my_provider_event_struct_literal
, side_arg_list(side_arg_struct(&mystruct
), side_arg_u8(55)));
93 static side_define_struct(mystructdef
,
95 side_field_u32("x", side_attr_list()),
96 side_field_s64("y", side_attr_list()),
101 side_static_event(my_provider_event_struct
, "myprovider", "myeventstruct", SIDE_LOGLEVEL_DEBUG
,
103 side_field_struct("struct", &mystructdef
),
104 side_field_u8("z", side_attr_list()),
110 void test_struct(void)
112 side_event_enable__my_provider_event_struct
= 1;
113 side_event_cond(my_provider_event_struct
) {
114 side_arg_define_vec(mystruct
, side_arg_list(side_arg_u32(21), side_arg_s64(22)));
115 side_event_call(my_provider_event_struct
, side_arg_list(side_arg_struct(&mystruct
), side_arg_u8(55)));
119 side_static_event(my_provider_event_array
, "myprovider", "myarray", SIDE_LOGLEVEL_DEBUG
,
121 side_field_array("arr", side_elem(side_type_u32(side_attr_list())), 3, side_attr_list()),
122 side_field_s64("v", side_attr_list()),
128 void test_array(void)
130 side_event_enable__my_provider_event_array
= 1;
131 side_event_cond(my_provider_event_array
) {
132 side_arg_define_vec(myarray
, side_arg_list(side_arg_u32(1), side_arg_u32(2), side_arg_u32(3)));
133 side_event_call(my_provider_event_array
, side_arg_list(side_arg_array(&myarray
), side_arg_s64(42)));
137 side_static_event(my_provider_event_vla
, "myprovider", "myvla", SIDE_LOGLEVEL_DEBUG
,
139 side_field_vla("vla", side_elem(side_type_u32(side_attr_list())), side_attr_list()),
140 side_field_s64("v", side_attr_list()),
148 side_event_enable__my_provider_event_vla
= 1;
149 side_event_cond(my_provider_event_vla
) {
150 side_arg_define_vec(myvla
, side_arg_list(side_arg_u32(1), side_arg_u32(2), side_arg_u32(3)));
151 side_event_call(my_provider_event_vla
, side_arg_list(side_arg_vla(&myvla
), side_arg_s64(42)));
155 /* 1D array visitor */
157 struct app_visitor_ctx
{
163 enum side_visitor_status
test_visitor(const struct side_tracer_visitor_ctx
*tracer_ctx
, void *_ctx
)
165 struct app_visitor_ctx
*ctx
= (struct app_visitor_ctx
*) _ctx
;
166 uint32_t length
= ctx
->length
, i
;
168 for (i
= 0; i
< length
; i
++) {
169 const struct side_arg_vec elem
= side_arg_u32(ctx
->ptr
[i
]);
171 if (tracer_ctx
->write_elem(tracer_ctx
, &elem
) != SIDE_VISITOR_STATUS_OK
)
172 return SIDE_VISITOR_STATUS_ERROR
;
174 return SIDE_VISITOR_STATUS_OK
;
177 static uint32_t testarray
[] = { 1, 2, 3, 4, 5, 6, 7, 8 };
179 side_static_event(my_provider_event_vla_visitor
, "myprovider", "myvlavisit", SIDE_LOGLEVEL_DEBUG
,
181 side_field_vla_visitor("vlavisit", side_elem(side_type_u32(side_attr_list())), test_visitor
, side_attr_list()),
182 side_field_s64("v", side_attr_list()),
188 void test_vla_visitor(void)
190 side_event_enable__my_provider_event_vla_visitor
= 1;
191 side_event_cond(my_provider_event_vla_visitor
) {
192 struct app_visitor_ctx ctx
= {
194 .length
= SIDE_ARRAY_SIZE(testarray
),
196 side_event_call(my_provider_event_vla_visitor
, side_arg_list(side_arg_vla_visitor(&ctx
), side_arg_s64(42)));
200 /* 2D array visitor */
202 struct app_visitor_2d_inner_ctx
{
208 enum side_visitor_status
test_inner_visitor(const struct side_tracer_visitor_ctx
*tracer_ctx
, void *_ctx
)
210 struct app_visitor_2d_inner_ctx
*ctx
= (struct app_visitor_2d_inner_ctx
*) _ctx
;
211 uint32_t length
= ctx
->length
, i
;
213 for (i
= 0; i
< length
; i
++) {
214 const struct side_arg_vec elem
= side_arg_u32(ctx
->ptr
[i
]);
216 if (tracer_ctx
->write_elem(tracer_ctx
, &elem
) != SIDE_VISITOR_STATUS_OK
)
217 return SIDE_VISITOR_STATUS_ERROR
;
219 return SIDE_VISITOR_STATUS_OK
;
222 struct app_visitor_2d_outer_ctx
{
223 const uint32_t (*ptr
)[2];
228 enum side_visitor_status
test_outer_visitor(const struct side_tracer_visitor_ctx
*tracer_ctx
, void *_ctx
)
230 struct app_visitor_2d_outer_ctx
*ctx
= (struct app_visitor_2d_outer_ctx
*) _ctx
;
231 uint32_t length
= ctx
->length
, i
;
233 for (i
= 0; i
< length
; i
++) {
234 struct app_visitor_2d_inner_ctx inner_ctx
= {
238 const struct side_arg_vec elem
= side_arg_vla_visitor(&inner_ctx
);
239 if (tracer_ctx
->write_elem(tracer_ctx
, &elem
) != SIDE_VISITOR_STATUS_OK
)
240 return SIDE_VISITOR_STATUS_ERROR
;
242 return SIDE_VISITOR_STATUS_OK
;
245 static uint32_t testarray2d
[][2] = {
251 side_static_event(my_provider_event_vla_visitor2d
, "myprovider", "myvlavisit2d", SIDE_LOGLEVEL_DEBUG
,
253 side_field_vla_visitor("vlavisit2d",
255 side_type_vla_visitor(
256 side_elem(side_type_u32(side_attr_list())),
259 ), test_outer_visitor
, side_attr_list()),
260 side_field_s64("v", side_attr_list()),
266 void test_vla_visitor_2d(void)
268 side_event_enable__my_provider_event_vla_visitor2d
= 1;
269 side_event_cond(my_provider_event_vla_visitor2d
) {
270 struct app_visitor_2d_outer_ctx ctx
= {
272 .length
= SIDE_ARRAY_SIZE(testarray2d
),
274 side_event_call(my_provider_event_vla_visitor2d
, side_arg_list(side_arg_vla_visitor(&ctx
), side_arg_s64(42)));
278 static int64_t array_fixint
[] = { -444, 555, 123, 2897432587 };
280 side_static_event(my_provider_event_array_fixint
, "myprovider", "myarrayfixint", SIDE_LOGLEVEL_DEBUG
,
282 side_field_array("arrfixint", side_elem(side_type_s64(side_attr_list())), SIDE_ARRAY_SIZE(array_fixint
), side_attr_list()),
283 side_field_s64("v", side_attr_list()),
289 void test_array_fixint(void)
291 side_event_enable__my_provider_event_array_fixint
= 1;
292 side_event(my_provider_event_array_fixint
,
293 side_arg_list(side_arg_array_s64(array_fixint
), side_arg_s64(42)));
296 static int64_t vla_fixint
[] = { -444, 555, 123, 2897432587 };
298 side_static_event(my_provider_event_vla_fixint
, "myprovider", "myvlafixint", SIDE_LOGLEVEL_DEBUG
,
300 side_field_vla("vlafixint", side_elem(side_type_s64(side_attr_list())), side_attr_list()),
301 side_field_s64("v", side_attr_list()),
307 void test_vla_fixint(void)
309 side_event_enable__my_provider_event_vla_fixint
= 1;
310 side_event(my_provider_event_vla_fixint
,
311 side_arg_list(side_arg_vla_s64(vla_fixint
, SIDE_ARRAY_SIZE(vla_fixint
)), side_arg_s64(42)));
314 side_static_event(my_provider_event_dynamic_basic
,
315 "myprovider", "mydynamicbasic", SIDE_LOGLEVEL_DEBUG
,
317 side_field_dynamic("dynamic", side_attr_list()),
323 void test_dynamic_basic_type(void)
325 side_event_enable__my_provider_event_dynamic_basic
= 1;
326 side_event(my_provider_event_dynamic_basic
,
327 side_arg_list(side_arg_dynamic(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", side_attr_list()),
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_enable__my_provider_event_dynamic_vla
= 1;
350 side_event(my_provider_event_dynamic_vla
,
351 side_arg_list(side_arg_dynamic(side_arg_dynamic_vla(&myvla
))));
354 side_static_event(my_provider_event_dynamic_null
,
355 "myprovider", "mydynamicnull", SIDE_LOGLEVEL_DEBUG
,
357 side_field_dynamic("dynamic", side_attr_list()),
363 void test_dynamic_null(void)
365 side_event_enable__my_provider_event_dynamic_null
= 1;
366 side_event(my_provider_event_dynamic_null
,
367 side_arg_list(side_arg_dynamic(side_arg_dynamic_null(side_attr_list()))));
370 side_static_event(my_provider_event_dynamic_struct
,
371 "myprovider", "mydynamicstruct", SIDE_LOGLEVEL_DEBUG
,
373 side_field_dynamic("dynamic", side_attr_list()),
379 void test_dynamic_struct(void)
381 side_arg_dynamic_define_struct(mystruct
,
383 side_arg_dynamic_field("a", side_arg_dynamic_u32(43, side_attr_list())),
384 side_arg_dynamic_field("b", side_arg_dynamic_string("zzz", side_attr_list())),
385 side_arg_dynamic_field("c", side_arg_dynamic_null(side_attr_list())),
390 side_event_enable__my_provider_event_dynamic_struct
= 1;
391 side_event(my_provider_event_dynamic_struct
,
392 side_arg_list(side_arg_dynamic(side_arg_dynamic_struct(&mystruct
))));
395 side_static_event(my_provider_event_dynamic_nested_struct
,
396 "myprovider", "mydynamicnestedstruct", SIDE_LOGLEVEL_DEBUG
,
398 side_field_dynamic("dynamic", side_attr_list()),
404 void test_dynamic_nested_struct(void)
406 side_arg_dynamic_define_struct(nested
,
408 side_arg_dynamic_field("a", side_arg_dynamic_u32(43, side_attr_list())),
409 side_arg_dynamic_field("b", side_arg_dynamic_u8(55, side_attr_list())),
413 side_arg_dynamic_define_struct(nested2
,
415 side_arg_dynamic_field("aa", side_arg_dynamic_u64(128, side_attr_list())),
416 side_arg_dynamic_field("bb", side_arg_dynamic_u16(1, side_attr_list())),
420 side_arg_dynamic_define_struct(mystruct
,
422 side_arg_dynamic_field("nested", side_arg_dynamic_struct(&nested
)),
423 side_arg_dynamic_field("nested2", side_arg_dynamic_struct(&nested2
)),
427 side_event_enable__my_provider_event_dynamic_nested_struct
= 1;
428 side_event(my_provider_event_dynamic_nested_struct
,
429 side_arg_list(side_arg_dynamic(side_arg_dynamic_struct(&mystruct
))));
432 side_static_event(my_provider_event_dynamic_vla_struct
,
433 "myprovider", "mydynamicvlastruct", SIDE_LOGLEVEL_DEBUG
,
435 side_field_dynamic("dynamic", side_attr_list()),
441 void test_dynamic_vla_struct(void)
443 side_arg_dynamic_define_struct(nested
,
445 side_arg_dynamic_field("a", side_arg_dynamic_u32(43, side_attr_list())),
446 side_arg_dynamic_field("b", side_arg_dynamic_u8(55, side_attr_list())),
450 side_arg_dynamic_define_vec(myvla
,
452 side_arg_dynamic_struct(&nested
),
453 side_arg_dynamic_struct(&nested
),
454 side_arg_dynamic_struct(&nested
),
455 side_arg_dynamic_struct(&nested
),
459 side_event_enable__my_provider_event_dynamic_vla_struct
= 1;
460 side_event(my_provider_event_dynamic_vla_struct
,
461 side_arg_list(side_arg_dynamic(side_arg_dynamic_vla(&myvla
))));
464 side_static_event(my_provider_event_dynamic_struct_vla
,
465 "myprovider", "mydynamicstructvla", SIDE_LOGLEVEL_DEBUG
,
467 side_field_dynamic("dynamic", side_attr_list()),
473 void test_dynamic_struct_vla(void)
475 side_arg_dynamic_define_vec(myvla
,
477 side_arg_dynamic_u32(1, side_attr_list()),
478 side_arg_dynamic_u32(2, side_attr_list()),
479 side_arg_dynamic_u32(3, side_attr_list()),
483 side_arg_dynamic_define_vec(myvla2
,
485 side_arg_dynamic_u32(4, side_attr_list()),
486 side_arg_dynamic_u64(5, side_attr_list()),
487 side_arg_dynamic_u32(6, side_attr_list()),
491 side_arg_dynamic_define_struct(mystruct
,
493 side_arg_dynamic_field("a", side_arg_dynamic_vla(&myvla
)),
494 side_arg_dynamic_field("b", side_arg_dynamic_vla(&myvla2
)),
498 side_event_enable__my_provider_event_dynamic_struct_vla
= 1;
499 side_event(my_provider_event_dynamic_struct_vla
,
500 side_arg_list(side_arg_dynamic(side_arg_dynamic_struct(&mystruct
))));
503 side_static_event(my_provider_event_dynamic_nested_vla
,
504 "myprovider", "mydynamicnestedvla", SIDE_LOGLEVEL_DEBUG
,
506 side_field_dynamic("dynamic", side_attr_list()),
512 void test_dynamic_nested_vla(void)
514 side_arg_dynamic_define_vec(nestedvla
,
516 side_arg_dynamic_u32(1, side_attr_list()),
517 side_arg_dynamic_u16(2, side_attr_list()),
518 side_arg_dynamic_u32(3, side_attr_list()),
522 side_arg_dynamic_define_vec(nestedvla2
,
524 side_arg_dynamic_u8(4, side_attr_list()),
525 side_arg_dynamic_u32(5, side_attr_list()),
526 side_arg_dynamic_u32(6, side_attr_list()),
530 side_arg_dynamic_define_vec(myvla
,
532 side_arg_dynamic_vla(&nestedvla
),
533 side_arg_dynamic_vla(&nestedvla2
),
537 side_event_enable__my_provider_event_dynamic_nested_vla
= 1;
538 side_event(my_provider_event_dynamic_nested_vla
,
539 side_arg_list(side_arg_dynamic(side_arg_dynamic_vla(&myvla
))));
542 side_static_event_variadic(my_provider_event_variadic
,
543 "myprovider", "myvariadicevent", SIDE_LOGLEVEL_DEBUG
,
549 void test_variadic(void)
551 side_event_enable__my_provider_event_variadic
= 1;
552 side_event_variadic(my_provider_event_variadic
,
555 side_arg_dynamic_field("a", side_arg_dynamic_u32(55, side_attr_list())),
556 side_arg_dynamic_field("b", side_arg_dynamic_s8(-4, side_attr_list())),
562 side_static_event_variadic(my_provider_event_static_variadic
,
563 "myprovider", "mystaticvariadicevent", SIDE_LOGLEVEL_DEBUG
,
565 side_field_u32("abc", side_attr_list()),
566 side_field_u16("def", side_attr_list()),
572 void test_static_variadic(void)
574 side_event_enable__my_provider_event_static_variadic
= 1;
575 side_event_variadic(my_provider_event_static_variadic
,
581 side_arg_dynamic_field("a", side_arg_dynamic_u32(55, side_attr_list())),
582 side_arg_dynamic_field("b", side_arg_dynamic_s8(-4, side_attr_list())),
588 side_static_event(my_provider_event_bool
, "myprovider", "myeventbool", SIDE_LOGLEVEL_DEBUG
,
590 side_field_bool("a_false", side_attr_list()),
591 side_field_bool("b_true", side_attr_list()),
592 side_field_bool("c_true", side_attr_list()),
593 side_field_bool("d_true", side_attr_list()),
594 side_field_bool("e_true", side_attr_list()),
595 side_field_bool("f_false", side_attr_list()),
596 side_field_bool("g_true", side_attr_list()),
606 uint64_t c
= 0x12345678;
612 side_event_enable__my_provider_event_bool
= 1;
613 side_event(my_provider_event_bool
,
626 side_static_event_variadic(my_provider_event_dynamic_bool
,
627 "myprovider", "mydynamicbool", SIDE_LOGLEVEL_DEBUG
,
633 void test_dynamic_bool(void)
635 side_event_enable__my_provider_event_dynamic_bool
= 1;
636 side_event_variadic(my_provider_event_dynamic_bool
,
639 side_arg_dynamic_field("a_true", side_arg_dynamic_bool(55, side_attr_list())),
640 side_arg_dynamic_field("b_true", side_arg_dynamic_bool(-4, side_attr_list())),
641 side_arg_dynamic_field("c_false", side_arg_dynamic_bool(0, side_attr_list())),
642 side_arg_dynamic_field("d_true", side_arg_dynamic_bool(256, side_attr_list())),
648 side_static_event(my_provider_event_dynamic_vla_visitor
,
649 "myprovider", "mydynamicvlavisitor", SIDE_LOGLEVEL_DEBUG
,
651 side_field_dynamic("dynamic", side_attr_list()),
656 struct app_dynamic_vla_visitor_ctx
{
662 enum side_visitor_status
test_dynamic_vla_visitor(const struct side_tracer_dynamic_vla_visitor_ctx
*tracer_ctx
, void *_ctx
)
664 struct app_dynamic_vla_visitor_ctx
*ctx
= (struct app_dynamic_vla_visitor_ctx
*) _ctx
;
665 uint32_t length
= ctx
->length
, i
;
667 for (i
= 0; i
< length
; i
++) {
668 const struct side_arg_dynamic_vec elem
= {
669 .dynamic_type
= SIDE_DYNAMIC_TYPE_U32
,
675 .side_u32
= ctx
->ptr
[i
],
680 if (tracer_ctx
->write_elem(tracer_ctx
, &elem
) != SIDE_VISITOR_STATUS_OK
)
681 return SIDE_VISITOR_STATUS_ERROR
;
683 return SIDE_VISITOR_STATUS_OK
;
686 static uint32_t testarray_dynamic_vla
[] = { 1, 2, 3, 4, 5, 6, 7, 8 };
689 void test_dynamic_vla_with_visitor(void)
691 side_event_enable__my_provider_event_dynamic_vla_visitor
= 1;
692 side_event_cond(my_provider_event_dynamic_vla_visitor
) {
693 struct app_dynamic_vla_visitor_ctx ctx
= {
694 .ptr
= testarray_dynamic_vla
,
695 .length
= SIDE_ARRAY_SIZE(testarray_dynamic_vla
),
697 side_event_call(my_provider_event_dynamic_vla_visitor
,
700 side_arg_dynamic_vla_visitor(test_dynamic_vla_visitor
, &ctx
, side_attr_list())
707 side_static_event(my_provider_event_dynamic_struct_visitor
,
708 "myprovider", "mydynamicstructvisitor", SIDE_LOGLEVEL_DEBUG
,
710 side_field_dynamic("dynamic", side_attr_list()),
715 struct struct_visitor_pair
{
720 struct app_dynamic_struct_visitor_ctx
{
721 const struct struct_visitor_pair
*ptr
;
726 enum side_visitor_status
test_dynamic_struct_visitor(const struct side_tracer_dynamic_struct_visitor_ctx
*tracer_ctx
, void *_ctx
)
728 struct app_dynamic_struct_visitor_ctx
*ctx
= (struct app_dynamic_struct_visitor_ctx
*) _ctx
;
729 uint32_t length
= ctx
->length
, i
;
731 for (i
= 0; i
< length
; i
++) {
732 struct side_arg_dynamic_event_field dynamic_field
= {
733 .field_name
= ctx
->ptr
[i
].name
,
735 .dynamic_type
= SIDE_DYNAMIC_TYPE_U32
,
741 .side_u32
= ctx
->ptr
[i
].value
,
747 if (tracer_ctx
->write_field(tracer_ctx
, &dynamic_field
) != SIDE_VISITOR_STATUS_OK
)
748 return SIDE_VISITOR_STATUS_ERROR
;
750 return SIDE_VISITOR_STATUS_OK
;
753 static struct struct_visitor_pair testarray_dynamic_struct
[] = {
761 void test_dynamic_struct_with_visitor(void)
763 side_event_enable__my_provider_event_dynamic_struct_visitor
= 1;
764 side_event_cond(my_provider_event_dynamic_struct_visitor
) {
765 struct app_dynamic_struct_visitor_ctx ctx
= {
766 .ptr
= testarray_dynamic_struct
,
767 .length
= SIDE_ARRAY_SIZE(testarray_dynamic_struct
),
769 side_event_call(my_provider_event_dynamic_struct_visitor
,
772 side_arg_dynamic_struct_visitor(test_dynamic_struct_visitor
, &ctx
, side_attr_list())
779 side_static_event(my_provider_event_user_attribute
, "myprovider", "myevent_user_attribute", SIDE_LOGLEVEL_DEBUG
,
781 side_field_u32("abc", side_attr_list()),
782 side_field_s64("def", side_attr_list()),
785 side_attr("user_attribute_a", side_attr_string("val1")),
786 side_attr("user_attribute_b", side_attr_string("val2")),
791 void test_event_user_attribute(void)
793 side_event_enable__my_provider_event_user_attribute
= 1;
794 side_event(my_provider_event_user_attribute
, side_arg_list(side_arg_u32(1), side_arg_s64(2)));
797 side_static_event(my_provider_field_user_attribute
, "myprovider", "myevent_field_attribute", SIDE_LOGLEVEL_DEBUG
,
799 side_field_u32("abc",
801 side_attr("user_attribute_a", side_attr_string("val1")),
802 side_attr("user_attribute_b", side_attr_u32(2)),
805 side_field_s64("def",
807 side_attr("user_attribute_c", side_attr_string("val3")),
808 side_attr("user_attribute_d", side_attr_s64(-5)),
816 void test_field_user_attribute(void)
818 side_event_enable__my_provider_field_user_attribute
= 1;
819 side_event(my_provider_field_user_attribute
, side_arg_list(side_arg_u32(1), side_arg_s64(2)));
822 side_static_event_variadic(my_provider_event_variadic_attr
,
823 "myprovider", "myvariadiceventattr", SIDE_LOGLEVEL_DEBUG
,
829 void test_variadic_attr(void)
831 side_event_enable__my_provider_event_variadic_attr
= 1;
832 side_event_variadic(my_provider_event_variadic_attr
,
835 side_arg_dynamic_field("a",
836 side_arg_dynamic_u32(55,
838 side_attr("user_attribute_c", side_attr_string("valX")),
839 side_attr("user_attribute_d", side_attr_u8(55)),
843 side_arg_dynamic_field("b",
844 side_arg_dynamic_s8(-4,
846 side_attr("X", side_attr_u8(1)),
847 side_attr("Y", side_attr_s8(2)),
856 side_static_event_variadic(my_provider_event_variadic_vla_attr
,
857 "myprovider", "myvariadiceventvlaattr", SIDE_LOGLEVEL_DEBUG
,
863 void test_variadic_vla_attr(void)
865 side_arg_dynamic_define_vec(myvla
,
867 side_arg_dynamic_u32(1,
869 side_attr("Z", side_attr_u8(0)),
870 side_attr("A", side_attr_u8(123)),
873 side_arg_dynamic_u32(2, side_attr_list()),
874 side_arg_dynamic_u32(3, side_attr_list()),
877 side_attr("X", side_attr_u8(1)),
878 side_attr("Y", side_attr_u8(2)),
881 side_event_enable__my_provider_event_variadic_vla_attr
= 1;
882 side_event_variadic(my_provider_event_variadic_vla_attr
,
885 side_arg_dynamic_field("a", side_arg_dynamic_vla(&myvla
)),
891 side_static_event_variadic(my_provider_event_variadic_struct_attr
,
892 "myprovider", "myvariadiceventstructattr", SIDE_LOGLEVEL_DEBUG
,
898 void test_variadic_struct_attr(void)
900 side_event_enable__my_provider_event_variadic_struct_attr
= 1;
901 side_event_cond(my_provider_event_variadic_struct_attr
) {
902 side_arg_dynamic_define_struct(mystruct
,
904 side_arg_dynamic_field("a",
905 side_arg_dynamic_u32(43,
907 side_attr("A", side_attr_bool(true)),
911 side_arg_dynamic_field("b", side_arg_dynamic_u8(55, side_attr_list())),
914 side_attr("X", side_attr_u8(1)),
915 side_attr("Y", side_attr_u8(2)),
918 side_event_call_variadic(my_provider_event_variadic_struct_attr
,
921 side_arg_dynamic_field("a", side_arg_dynamic_struct(&mystruct
)),
928 side_static_event(my_provider_event_float
, "myprovider", "myeventfloat", SIDE_LOGLEVEL_DEBUG
,
931 side_field_float_binary16("binary16", side_attr_list()),
934 side_field_float_binary32("binary32", side_attr_list()),
937 side_field_float_binary64("binary64", side_attr_list()),
940 side_field_float_binary128("binary128", side_attr_list()),
947 void test_float(void)
949 side_event_enable__my_provider_event_float
= 1;
950 side_event(my_provider_event_float
,
953 side_arg_float_binary16(1.1),
956 side_arg_float_binary32(2.2),
959 side_arg_float_binary64(3.3),
962 side_arg_float_binary128(4.4),
968 side_static_event_variadic(my_provider_event_variadic_float
,
969 "myprovider", "myvariadicfloat", SIDE_LOGLEVEL_DEBUG
,
975 void test_variadic_float(void)
977 side_event_enable__my_provider_event_variadic_float
= 1;
978 side_event_variadic(my_provider_event_variadic_float
,
982 side_arg_dynamic_field("binary16",
983 side_arg_dynamic_float_binary16(1.1, side_attr_list())
987 side_arg_dynamic_field("binary32",
988 side_arg_dynamic_float_binary32(2.2, side_attr_list())
992 side_arg_dynamic_field("binary64",
993 side_arg_dynamic_float_binary64(3.3, side_attr_list())
997 side_arg_dynamic_field("binary128",
998 side_arg_dynamic_float_binary128(4.4, side_attr_list())
1006 static side_define_enum(myenum
,
1007 side_enum_mapping_list(
1008 side_enum_mapping_range("one-ten", 1, 10),
1009 side_enum_mapping_range("100-200", 100, 200),
1010 side_enum_mapping_value("200", 200),
1011 side_enum_mapping_value("300", 300),
1016 side_static_event(my_provider_event_enum
, "myprovider", "myeventenum", SIDE_LOGLEVEL_DEBUG
,
1018 side_field_enum("5", &myenum
, side_elem(side_type_u32(side_attr_list()))),
1019 side_field_enum("400", &myenum
, side_elem(side_type_u64(side_attr_list()))),
1020 side_field_enum("200", &myenum
, side_elem(side_type_u8(side_attr_list()))),
1021 side_field_enum("-100", &myenum
, side_elem(side_type_s8(side_attr_list()))),
1027 void test_enum(void)
1029 side_event_enable__my_provider_event_enum
= 1;
1030 side_event(my_provider_event_enum
,
1040 /* A bitmap enum maps bits to labels. */
1041 static side_define_enum_bitmap(myenum_bitmap
,
1042 side_enum_bitmap_mapping_list(
1043 side_enum_bitmap_mapping_value("0", 0),
1044 side_enum_bitmap_mapping_range("1-2", 1, 2),
1045 side_enum_bitmap_mapping_range("2-4", 2, 4),
1046 side_enum_bitmap_mapping_value("3", 3),
1047 side_enum_bitmap_mapping_value("30", 30),
1048 side_enum_bitmap_mapping_value("63", 63),
1049 side_enum_bitmap_mapping_range("158-160", 158, 160),
1050 side_enum_bitmap_mapping_value("159", 159),
1051 side_enum_bitmap_mapping_range("500-700", 500, 700),
1056 side_static_event(my_provider_event_enum_bitmap
, "myprovider", "myeventenumbitmap", SIDE_LOGLEVEL_DEBUG
,
1058 side_field_enum_bitmap("bit_0", &myenum_bitmap
, side_elem(side_type_u32(side_attr_list()))),
1059 side_field_enum_bitmap("bit_1", &myenum_bitmap
, side_elem(side_type_u32(side_attr_list()))),
1060 side_field_enum_bitmap("bit_2", &myenum_bitmap
, side_elem(side_type_u8(side_attr_list()))),
1061 side_field_enum_bitmap("bit_3", &myenum_bitmap
, side_elem(side_type_u8(side_attr_list()))),
1062 side_field_enum_bitmap("bit_30", &myenum_bitmap
, side_elem(side_type_u32(side_attr_list()))),
1063 side_field_enum_bitmap("bit_31", &myenum_bitmap
, side_elem(side_type_u32(side_attr_list()))),
1064 side_field_enum_bitmap("bit_63", &myenum_bitmap
, side_elem(side_type_u64(side_attr_list()))),
1065 side_field_enum_bitmap("bits_1+63", &myenum_bitmap
, side_elem(side_type_u64(side_attr_list()))),
1066 side_field_enum_bitmap("byte_bit_2", &myenum_bitmap
, side_elem(side_type_byte(side_attr_list()))),
1067 side_field_enum_bitmap("bit_159", &myenum_bitmap
,
1068 side_elem(side_type_array(side_elem(side_type_u32(side_attr_list())), 5, side_attr_list()))),
1069 side_field_enum_bitmap("bit_159", &myenum_bitmap
,
1070 side_elem(side_type_vla(side_elem(side_type_u32(side_attr_list())), side_attr_list()))),
1076 void test_enum_bitmap(void)
1078 side_event_enable__my_provider_event_enum_bitmap
= 1;
1079 side_event_cond(my_provider_event_enum_bitmap
) {
1080 side_arg_define_vec(myarray
,
1086 side_arg_u32(0x80000000), /* bit 159 */
1089 side_event_call(my_provider_event_enum_bitmap
,
1091 side_arg_u32(1 << 0),
1092 side_arg_u32(1 << 1),
1093 side_arg_u8(1 << 2),
1094 side_arg_u8(1 << 3),
1095 side_arg_u32(1 << 30),
1096 side_arg_u32(1 << 31),
1097 side_arg_u64(1ULL << 63),
1098 side_arg_u64((1ULL << 1) | (1ULL << 63)),
1099 side_arg_byte(1 << 2),
1100 side_arg_array(&myarray
),
1101 side_arg_vla(&myarray
),
1107 static uint8_t blob_fixint
[] = { 0x55, 0x44, 0x33, 0x22, 0x11 };
1109 side_static_event_variadic(my_provider_event_blob
, "myprovider", "myeventblob", SIDE_LOGLEVEL_DEBUG
,
1111 side_field_byte("blobfield", side_attr_list()),
1112 side_field_array("arrayblob", side_elem(side_type_byte(side_attr_list())), 3, side_attr_list()),
1113 side_field_array("arrayblobfix", side_elem(side_type_byte(side_attr_list())), SIDE_ARRAY_SIZE(blob_fixint
), side_attr_list()),
1114 side_field_vla("vlablobfix", side_elem(side_type_byte(side_attr_list())), side_attr_list()),
1120 void test_blob(void)
1122 side_event_enable__my_provider_event_blob
= 1;
1123 side_event_cond(my_provider_event_blob
) {
1124 side_arg_define_vec(myarray
, side_arg_list(side_arg_byte(1), side_arg_byte(2), side_arg_byte(3)));
1125 side_arg_dynamic_define_vec(myvla
,
1127 side_arg_dynamic_byte(0x22, side_attr_list()),
1128 side_arg_dynamic_byte(0x33, side_attr_list()),
1132 side_event_call_variadic(my_provider_event_blob
,
1134 side_arg_byte(0x55),
1135 side_arg_array(&myarray
),
1136 side_arg_array_byte(blob_fixint
),
1137 side_arg_vla_byte(blob_fixint
, SIDE_ARRAY_SIZE(blob_fixint
)),
1140 side_arg_dynamic_field("varblobfield",
1141 side_arg_dynamic_byte(0x55, side_attr_list())
1143 side_arg_dynamic_field("varblobvla", side_arg_dynamic_vla(&myvla
)),
1150 side_static_event_variadic(my_provider_event_format_string
,
1151 "myprovider", "myeventformatstring", SIDE_LOGLEVEL_DEBUG
,
1153 side_field_string("fmt", side_attr_list()),
1156 side_attr("lang.c.format_string", side_attr_bool(true)),
1161 void test_fmt_string(void)
1163 side_event_enable__my_provider_event_format_string
= 1;
1164 side_event_cond(my_provider_event_format_string
) {
1165 side_arg_dynamic_define_vec(args
,
1167 side_arg_dynamic_string("blah", side_attr_list()),
1168 side_arg_dynamic_s32(123, side_attr_list()),
1172 side_event_call_variadic(my_provider_event_format_string
,
1174 side_arg_string("This is a formatted string with str: %s int: %d"),
1177 side_arg_dynamic_field("arguments", side_arg_dynamic_vla(&args
)),
1187 test_event_hidden();
1188 test_event_export();
1189 test_struct_literal();
1194 test_vla_visitor_2d();
1195 test_array_fixint();
1197 test_dynamic_basic_type();
1199 test_dynamic_null();
1200 test_dynamic_struct();
1201 test_dynamic_nested_struct();
1202 test_dynamic_vla_struct();
1203 test_dynamic_struct_vla();
1204 test_dynamic_nested_vla();
1206 test_static_variadic();
1208 test_dynamic_bool();
1209 test_dynamic_vla_with_visitor();
1210 test_dynamic_struct_with_visitor();
1211 test_event_user_attribute();
1212 test_field_user_attribute();
1213 test_variadic_attr();
1214 test_variadic_vla_attr();
1215 test_variadic_struct_attr();
1217 test_variadic_float();