1 // SPDX-License-Identifier: MIT
3 * Copyright 2022 Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
11 #include <side/trace.h>
14 /* User code example */
16 static side_define_event(my_provider_event
, "myprovider", "myevent", SIDE_LOGLEVEL_DEBUG
,
18 side_field(SIDE_TYPE_U32
, "abc"),
19 side_field(SIDE_TYPE_S64
, "def"),
20 side_field(SIDE_TYPE_DYNAMIC
, "dynamic"),
25 void test_fields(void)
30 my_provider_event
.enabled
= 1;
31 side_event(&my_provider_event
, side_arg_list(side_arg_u32(uw
), side_arg_s64(sdw
), side_arg_string("zzz")));
34 static side_define_event(my_provider_event2
, "myprovider", "myevent2", SIDE_LOGLEVEL_DEBUG
,
36 side_field_struct("structfield",
38 side_field(SIDE_TYPE_U32
, "x"),
39 side_field(SIDE_TYPE_S64
, "y"),
42 side_field(SIDE_TYPE_U8
, "z"),
47 void test_struct(void)
49 my_provider_event2
.enabled
= 1;
50 side_event_cond(&my_provider_event2
) {
51 side_arg_define_vec(mystruct
, side_arg_list(side_arg_u32(21), side_arg_s64(22)));
52 side_event_call(&my_provider_event2
, side_arg_list(side_arg_struct(&mystruct
), side_arg_u8(55)));
56 static side_define_event(my_provider_event_array
, "myprovider", "myarray", SIDE_LOGLEVEL_DEBUG
,
58 side_field_array("arr", side_elem(SIDE_TYPE_U32
), 3),
59 side_field(SIDE_TYPE_S64
, "v"),
66 my_provider_event_array
.enabled
= 1;
67 side_event_cond(&my_provider_event_array
) {
68 side_arg_define_vec(myarray
, side_arg_list(side_arg_u32(1), side_arg_u32(2), side_arg_u32(3)));
69 side_event_call(&my_provider_event_array
, side_arg_list(side_arg_array(&myarray
), side_arg_s64(42)));
73 static side_define_event(my_provider_event_vla
, "myprovider", "myvla", SIDE_LOGLEVEL_DEBUG
,
75 side_field_vla("vla", side_elem(SIDE_TYPE_U32
)),
76 side_field(SIDE_TYPE_S64
, "v"),
83 my_provider_event_vla
.enabled
= 1;
84 side_event_cond(&my_provider_event_vla
) {
85 side_arg_define_vec(myvla
, side_arg_list(side_arg_u32(1), side_arg_u32(2), side_arg_u32(3)));
86 side_event_call(&my_provider_event_vla
, side_arg_list(side_arg_vla(&myvla
), side_arg_s64(42)));
90 struct app_visitor_ctx
{
97 enum side_visitor_status
test_visitor_begin(void *_ctx
)
99 struct app_visitor_ctx
*ctx
= (struct app_visitor_ctx
*) _ctx
;
100 ctx
->current_pos
= ctx
->init_pos
;
101 return SIDE_VISITOR_STATUS_OK
;
104 enum side_visitor_status
test_visitor_end(void *_ctx
)
106 return SIDE_VISITOR_STATUS_OK
;
109 enum side_visitor_status
test_visitor_get_next(void *_ctx
, struct side_arg_vec
*sav_elem
)
111 struct app_visitor_ctx
*ctx
= (struct app_visitor_ctx
*) _ctx
;
113 if (ctx
->current_pos
>= ctx
->end_pos
)
114 return SIDE_VISITOR_STATUS_END
;
115 sav_elem
->type
= SIDE_TYPE_U32
;
116 sav_elem
->u
.side_u32
= ctx
->ptr
[ctx
->current_pos
++];
117 return SIDE_VISITOR_STATUS_OK
;
120 static uint32_t testarray
[] = { 1, 2, 3, 4, 5, 6, 7, 8 };
122 static side_define_event(my_provider_event_vla_visitor
, "myprovider", "myvlavisit", SIDE_LOGLEVEL_DEBUG
,
124 side_field_vla_visitor("vlavisit", side_elem(SIDE_TYPE_U32
),
125 test_visitor_begin
, test_visitor_end
, test_visitor_get_next
),
126 side_field(SIDE_TYPE_S64
, "v"),
131 void test_vla_visitor(void)
133 my_provider_event_vla_visitor
.enabled
= 1;
134 side_event_cond(&my_provider_event_vla_visitor
) {
135 struct app_visitor_ctx ctx
= {
139 .end_pos
= SIDE_ARRAY_SIZE(testarray
),
141 side_event_call(&my_provider_event_vla_visitor
, side_arg_list(side_arg_vla_visitor(&ctx
), side_arg_s64(42)));
145 static int64_t array_fixint
[] = { -444, 555, 123, 2897432587 };
147 static side_define_event(my_provider_event_array_fixint
, "myprovider", "myarrayfixint", SIDE_LOGLEVEL_DEBUG
,
149 side_field_array("arrfixint", side_elem(SIDE_TYPE_S64
), SIDE_ARRAY_SIZE(array_fixint
)),
150 side_field(SIDE_TYPE_S64
, "v"),
155 void test_array_fixint(void)
157 my_provider_event_array_fixint
.enabled
= 1;
158 side_event(&my_provider_event_array_fixint
,
159 side_arg_list(side_arg_array_s64(array_fixint
), side_arg_s64(42)));
162 static int64_t vla_fixint
[] = { -444, 555, 123, 2897432587 };
164 static side_define_event(my_provider_event_vla_fixint
, "myprovider", "myvlafixint", SIDE_LOGLEVEL_DEBUG
,
166 side_field_vla("vlafixint", side_elem(SIDE_TYPE_S64
)),
167 side_field(SIDE_TYPE_S64
, "v"),
172 void test_vla_fixint(void)
174 my_provider_event_vla_fixint
.enabled
= 1;
175 side_event(&my_provider_event_vla_fixint
,
176 side_arg_list(side_arg_vla_s64(vla_fixint
, SIDE_ARRAY_SIZE(vla_fixint
)), side_arg_s64(42)));