Commit | Line | Data |
---|---|---|
f611d0c3 MD |
1 | // SPDX-License-Identifier: MIT |
2 | /* | |
3 | * Copyright 2022 Mathieu Desnoyers <mathieu.desnoyers@efficios.com> | |
4 | */ | |
5 | ||
6 | #include <stdint.h> | |
7 | #include <inttypes.h> | |
8 | #include <stdlib.h> | |
9 | #include <stdio.h> | |
4f40d951 | 10 | #include <stdbool.h> |
f611d0c3 MD |
11 | |
12 | #include <side/trace.h> | |
13 | #include "tracer.h" | |
14 | ||
15 | /* User code example */ | |
16 | ||
89747802 | 17 | side_static_event(my_provider_event, "myprovider", "myevent", SIDE_LOGLEVEL_DEBUG, |
f611d0c3 | 18 | side_field_list( |
485b800a MD |
19 | side_field_u32("abc", side_attr_list()), |
20 | side_field_s64("def", side_attr_list()), | |
21 | side_field_dynamic("dynamic", side_attr_list()), | |
399c836b MD |
22 | ), |
23 | side_attr_list() | |
f611d0c3 MD |
24 | ); |
25 | ||
26 | static | |
27 | void test_fields(void) | |
28 | { | |
29 | uint32_t uw = 42; | |
30 | int64_t sdw = -500; | |
31 | ||
d5cdb129 | 32 | side_event(my_provider_event, side_arg_list(side_arg_u32(uw), side_arg_s64(sdw), |
808bd9bf | 33 | side_arg_dynamic(side_arg_dynamic_string("zzz", side_attr_list())))); |
f611d0c3 MD |
34 | } |
35 | ||
89747802 MD |
36 | side_hidden_event(my_provider_event_hidden, "myprovider", "myeventhidden", SIDE_LOGLEVEL_DEBUG, |
37 | side_field_list( | |
38 | side_field_u32("abc", side_attr_list()), | |
39 | ), | |
40 | side_attr_list() | |
41 | ); | |
42 | ||
43 | static | |
44 | void test_event_hidden(void) | |
45 | { | |
89747802 MD |
46 | side_event(my_provider_event_hidden, side_arg_list(side_arg_u32(2))); |
47 | } | |
48 | ||
49 | side_declare_event(my_provider_event_export); | |
50 | ||
51 | side_export_event(my_provider_event_export, "myprovider", "myeventexport", SIDE_LOGLEVEL_DEBUG, | |
52 | side_field_list( | |
53 | side_field_u32("abc", side_attr_list()), | |
54 | ), | |
55 | side_attr_list() | |
56 | ); | |
57 | ||
58 | static | |
59 | void test_event_export(void) | |
60 | { | |
89747802 MD |
61 | side_event(my_provider_event_export, side_arg_list(side_arg_u32(2))); |
62 | } | |
63 | ||
64 | side_static_event(my_provider_event_struct_literal, "myprovider", "myeventstructliteral", SIDE_LOGLEVEL_DEBUG, | |
f611d0c3 | 65 | side_field_list( |
c7a14585 MD |
66 | side_field_struct("structliteral", |
67 | side_struct_literal( | |
68 | side_field_list( | |
69 | side_field_u32("x", side_attr_list()), | |
70 | side_field_s64("y", side_attr_list()), | |
71 | ), | |
72 | side_attr_list() | |
73 | ) | |
f611d0c3 | 74 | ), |
485b800a | 75 | side_field_u8("z", side_attr_list()), |
399c836b MD |
76 | ), |
77 | side_attr_list() | |
f611d0c3 MD |
78 | ); |
79 | ||
c7a14585 MD |
80 | static |
81 | void test_struct_literal(void) | |
82 | { | |
c7a14585 MD |
83 | side_event_cond(my_provider_event_struct_literal) { |
84 | side_arg_define_vec(mystruct, side_arg_list(side_arg_u32(21), side_arg_s64(22))); | |
85 | side_event_call(my_provider_event_struct_literal, side_arg_list(side_arg_struct(&mystruct), side_arg_u8(55))); | |
86 | } | |
87 | } | |
88 | ||
89 | static side_define_struct(mystructdef, | |
90 | side_field_list( | |
91 | side_field_u32("x", side_attr_list()), | |
92 | side_field_s64("y", side_attr_list()), | |
93 | ), | |
94 | side_attr_list() | |
95 | ); | |
96 | ||
89747802 | 97 | side_static_event(my_provider_event_struct, "myprovider", "myeventstruct", SIDE_LOGLEVEL_DEBUG, |
c7a14585 MD |
98 | side_field_list( |
99 | side_field_struct("struct", &mystructdef), | |
100 | side_field_u8("z", side_attr_list()), | |
101 | ), | |
102 | side_attr_list() | |
103 | ); | |
104 | ||
f611d0c3 MD |
105 | static |
106 | void test_struct(void) | |
107 | { | |
c7a14585 | 108 | side_event_cond(my_provider_event_struct) { |
f611d0c3 | 109 | side_arg_define_vec(mystruct, side_arg_list(side_arg_u32(21), side_arg_s64(22))); |
c7a14585 | 110 | side_event_call(my_provider_event_struct, side_arg_list(side_arg_struct(&mystruct), side_arg_u8(55))); |
f611d0c3 MD |
111 | } |
112 | } | |
113 | ||
89747802 | 114 | side_static_event(my_provider_event_array, "myprovider", "myarray", SIDE_LOGLEVEL_DEBUG, |
f611d0c3 | 115 | side_field_list( |
9a55f555 | 116 | side_field_array("arr", side_elem(side_type_u32(side_attr_list())), 3, side_attr_list()), |
485b800a | 117 | side_field_s64("v", side_attr_list()), |
399c836b MD |
118 | ), |
119 | side_attr_list() | |
f611d0c3 MD |
120 | ); |
121 | ||
122 | static | |
123 | void test_array(void) | |
124 | { | |
d5cdb129 | 125 | side_event_cond(my_provider_event_array) { |
f611d0c3 | 126 | side_arg_define_vec(myarray, side_arg_list(side_arg_u32(1), side_arg_u32(2), side_arg_u32(3))); |
d5cdb129 | 127 | side_event_call(my_provider_event_array, side_arg_list(side_arg_array(&myarray), side_arg_s64(42))); |
f611d0c3 MD |
128 | } |
129 | } | |
130 | ||
89747802 | 131 | side_static_event(my_provider_event_vla, "myprovider", "myvla", SIDE_LOGLEVEL_DEBUG, |
f611d0c3 | 132 | side_field_list( |
9a55f555 | 133 | side_field_vla("vla", side_elem(side_type_u32(side_attr_list())), side_attr_list()), |
485b800a | 134 | side_field_s64("v", side_attr_list()), |
399c836b MD |
135 | ), |
136 | side_attr_list() | |
f611d0c3 MD |
137 | ); |
138 | ||
139 | static | |
140 | void test_vla(void) | |
141 | { | |
d5cdb129 | 142 | side_event_cond(my_provider_event_vla) { |
f611d0c3 | 143 | side_arg_define_vec(myvla, side_arg_list(side_arg_u32(1), side_arg_u32(2), side_arg_u32(3))); |
d5cdb129 | 144 | side_event_call(my_provider_event_vla, side_arg_list(side_arg_vla(&myvla), side_arg_s64(42))); |
f611d0c3 MD |
145 | } |
146 | } | |
147 | ||
cdd6e858 MD |
148 | /* 1D array visitor */ |
149 | ||
f611d0c3 MD |
150 | struct app_visitor_ctx { |
151 | const uint32_t *ptr; | |
352a4b77 | 152 | uint32_t length; |
f611d0c3 MD |
153 | }; |
154 | ||
352a4b77 MD |
155 | static |
156 | enum side_visitor_status test_visitor(const struct side_tracer_visitor_ctx *tracer_ctx, void *_ctx) | |
f611d0c3 MD |
157 | { |
158 | struct app_visitor_ctx *ctx = (struct app_visitor_ctx *) _ctx; | |
352a4b77 MD |
159 | uint32_t length = ctx->length, i; |
160 | ||
161 | for (i = 0; i < length; i++) { | |
ffb5c809 MD |
162 | const struct side_arg_vec elem = side_arg_u32(ctx->ptr[i]); |
163 | ||
db6ecef9 MD |
164 | if (tracer_ctx->write_elem(tracer_ctx, &elem) != SIDE_VISITOR_STATUS_OK) |
165 | return SIDE_VISITOR_STATUS_ERROR; | |
352a4b77 | 166 | } |
f611d0c3 MD |
167 | return SIDE_VISITOR_STATUS_OK; |
168 | } | |
169 | ||
170 | static uint32_t testarray[] = { 1, 2, 3, 4, 5, 6, 7, 8 }; | |
171 | ||
89747802 | 172 | side_static_event(my_provider_event_vla_visitor, "myprovider", "myvlavisit", SIDE_LOGLEVEL_DEBUG, |
f611d0c3 | 173 | side_field_list( |
9a55f555 | 174 | side_field_vla_visitor("vlavisit", side_elem(side_type_u32(side_attr_list())), test_visitor, side_attr_list()), |
485b800a | 175 | side_field_s64("v", side_attr_list()), |
399c836b MD |
176 | ), |
177 | side_attr_list() | |
f611d0c3 MD |
178 | ); |
179 | ||
180 | static | |
181 | void test_vla_visitor(void) | |
182 | { | |
d5cdb129 | 183 | side_event_cond(my_provider_event_vla_visitor) { |
f611d0c3 MD |
184 | struct app_visitor_ctx ctx = { |
185 | .ptr = testarray, | |
352a4b77 | 186 | .length = SIDE_ARRAY_SIZE(testarray), |
f611d0c3 | 187 | }; |
d5cdb129 | 188 | side_event_call(my_provider_event_vla_visitor, side_arg_list(side_arg_vla_visitor(&ctx), side_arg_s64(42))); |
f611d0c3 MD |
189 | } |
190 | } | |
191 | ||
cdd6e858 MD |
192 | /* 2D array visitor */ |
193 | ||
194 | struct app_visitor_2d_inner_ctx { | |
195 | const uint32_t *ptr; | |
196 | uint32_t length; | |
197 | }; | |
198 | ||
199 | static | |
200 | enum side_visitor_status test_inner_visitor(const struct side_tracer_visitor_ctx *tracer_ctx, void *_ctx) | |
201 | { | |
202 | struct app_visitor_2d_inner_ctx *ctx = (struct app_visitor_2d_inner_ctx *) _ctx; | |
203 | uint32_t length = ctx->length, i; | |
204 | ||
205 | for (i = 0; i < length; i++) { | |
ffb5c809 MD |
206 | const struct side_arg_vec elem = side_arg_u32(ctx->ptr[i]); |
207 | ||
db6ecef9 MD |
208 | if (tracer_ctx->write_elem(tracer_ctx, &elem) != SIDE_VISITOR_STATUS_OK) |
209 | return SIDE_VISITOR_STATUS_ERROR; | |
cdd6e858 MD |
210 | } |
211 | return SIDE_VISITOR_STATUS_OK; | |
212 | } | |
213 | ||
214 | struct app_visitor_2d_outer_ctx { | |
215 | const uint32_t (*ptr)[2]; | |
216 | uint32_t length; | |
217 | }; | |
218 | ||
219 | static | |
220 | enum side_visitor_status test_outer_visitor(const struct side_tracer_visitor_ctx *tracer_ctx, void *_ctx) | |
221 | { | |
222 | struct app_visitor_2d_outer_ctx *ctx = (struct app_visitor_2d_outer_ctx *) _ctx; | |
223 | uint32_t length = ctx->length, i; | |
224 | ||
225 | for (i = 0; i < length; i++) { | |
226 | struct app_visitor_2d_inner_ctx inner_ctx = { | |
227 | .ptr = ctx->ptr[i], | |
228 | .length = 2, | |
229 | }; | |
230 | const struct side_arg_vec elem = side_arg_vla_visitor(&inner_ctx); | |
db6ecef9 MD |
231 | if (tracer_ctx->write_elem(tracer_ctx, &elem) != SIDE_VISITOR_STATUS_OK) |
232 | return SIDE_VISITOR_STATUS_ERROR; | |
cdd6e858 MD |
233 | } |
234 | return SIDE_VISITOR_STATUS_OK; | |
235 | } | |
236 | ||
237 | static uint32_t testarray2d[][2] = { | |
238 | { 1, 2 }, | |
239 | { 33, 44 }, | |
240 | { 55, 66 }, | |
241 | }; | |
242 | ||
89747802 | 243 | side_static_event(my_provider_event_vla_visitor2d, "myprovider", "myvlavisit2d", SIDE_LOGLEVEL_DEBUG, |
cdd6e858 MD |
244 | side_field_list( |
245 | side_field_vla_visitor("vlavisit2d", | |
f37a556f | 246 | side_elem( |
32ba58fc | 247 | side_type_vla_visitor( |
9a55f555 | 248 | side_elem(side_type_u32(side_attr_list())), |
f37a556f MD |
249 | test_inner_visitor, |
250 | side_attr_list()) | |
251 | ), test_outer_visitor, side_attr_list()), | |
485b800a | 252 | side_field_s64("v", side_attr_list()), |
399c836b MD |
253 | ), |
254 | side_attr_list() | |
cdd6e858 MD |
255 | ); |
256 | ||
257 | static | |
258 | void test_vla_visitor_2d(void) | |
259 | { | |
d5cdb129 | 260 | side_event_cond(my_provider_event_vla_visitor2d) { |
cdd6e858 MD |
261 | struct app_visitor_2d_outer_ctx ctx = { |
262 | .ptr = testarray2d, | |
263 | .length = SIDE_ARRAY_SIZE(testarray2d), | |
264 | }; | |
d5cdb129 | 265 | side_event_call(my_provider_event_vla_visitor2d, side_arg_list(side_arg_vla_visitor(&ctx), side_arg_s64(42))); |
cdd6e858 MD |
266 | } |
267 | } | |
268 | ||
ba845af5 MD |
269 | static int64_t array_fixint[] = { -444, 555, 123, 2897432587 }; |
270 | ||
89747802 | 271 | side_static_event(my_provider_event_array_fixint, "myprovider", "myarrayfixint", SIDE_LOGLEVEL_DEBUG, |
ba845af5 | 272 | side_field_list( |
9a55f555 | 273 | side_field_array("arrfixint", side_elem(side_type_s64(side_attr_list())), SIDE_ARRAY_SIZE(array_fixint), side_attr_list()), |
485b800a | 274 | side_field_s64("v", side_attr_list()), |
399c836b MD |
275 | ), |
276 | side_attr_list() | |
ba845af5 MD |
277 | ); |
278 | ||
279 | static | |
280 | void test_array_fixint(void) | |
281 | { | |
d5cdb129 | 282 | side_event(my_provider_event_array_fixint, |
1533629f MD |
283 | side_arg_list(side_arg_array_s64(array_fixint), side_arg_s64(42))); |
284 | } | |
285 | ||
286 | static int64_t vla_fixint[] = { -444, 555, 123, 2897432587 }; | |
287 | ||
89747802 | 288 | side_static_event(my_provider_event_vla_fixint, "myprovider", "myvlafixint", SIDE_LOGLEVEL_DEBUG, |
1533629f | 289 | side_field_list( |
9a55f555 | 290 | side_field_vla("vlafixint", side_elem(side_type_s64(side_attr_list())), side_attr_list()), |
485b800a | 291 | side_field_s64("v", side_attr_list()), |
399c836b MD |
292 | ), |
293 | side_attr_list() | |
1533629f MD |
294 | ); |
295 | ||
296 | static | |
297 | void test_vla_fixint(void) | |
298 | { | |
d5cdb129 | 299 | side_event(my_provider_event_vla_fixint, |
1533629f | 300 | side_arg_list(side_arg_vla_s64(vla_fixint, SIDE_ARRAY_SIZE(vla_fixint)), side_arg_s64(42))); |
ba845af5 MD |
301 | } |
302 | ||
89747802 | 303 | side_static_event(my_provider_event_dynamic_basic, |
a2e2357e MD |
304 | "myprovider", "mydynamicbasic", SIDE_LOGLEVEL_DEBUG, |
305 | side_field_list( | |
485b800a | 306 | side_field_dynamic("dynamic", side_attr_list()), |
399c836b MD |
307 | ), |
308 | side_attr_list() | |
a2e2357e MD |
309 | ); |
310 | ||
311 | static | |
312 | void test_dynamic_basic_type(void) | |
313 | { | |
d5cdb129 | 314 | side_event(my_provider_event_dynamic_basic, |
808bd9bf | 315 | side_arg_list(side_arg_dynamic(side_arg_dynamic_s16(-33, side_attr_list())))); |
a2e2357e MD |
316 | } |
317 | ||
89747802 | 318 | side_static_event(my_provider_event_dynamic_vla, |
a2e2357e MD |
319 | "myprovider", "mydynamicvla", SIDE_LOGLEVEL_DEBUG, |
320 | side_field_list( | |
485b800a | 321 | side_field_dynamic("dynamic", side_attr_list()), |
399c836b MD |
322 | ), |
323 | side_attr_list() | |
a2e2357e MD |
324 | ); |
325 | ||
326 | static | |
327 | void test_dynamic_vla(void) | |
328 | { | |
948e3e72 MD |
329 | side_arg_dynamic_define_vec(myvla, |
330 | side_arg_list( | |
808bd9bf MD |
331 | side_arg_dynamic_u32(1, side_attr_list()), |
332 | side_arg_dynamic_u32(2, side_attr_list()), | |
333 | side_arg_dynamic_u32(3, side_attr_list()), | |
8d20e708 MD |
334 | ), |
335 | side_attr_list() | |
df075fa5 | 336 | ); |
d5cdb129 | 337 | side_event(my_provider_event_dynamic_vla, |
8d20e708 | 338 | side_arg_list(side_arg_dynamic(side_arg_dynamic_vla(&myvla)))); |
a2e2357e MD |
339 | } |
340 | ||
89747802 | 341 | side_static_event(my_provider_event_dynamic_null, |
465e5e7e MD |
342 | "myprovider", "mydynamicnull", SIDE_LOGLEVEL_DEBUG, |
343 | side_field_list( | |
485b800a | 344 | side_field_dynamic("dynamic", side_attr_list()), |
399c836b MD |
345 | ), |
346 | side_attr_list() | |
465e5e7e MD |
347 | ); |
348 | ||
349 | static | |
350 | void test_dynamic_null(void) | |
351 | { | |
d5cdb129 | 352 | side_event(my_provider_event_dynamic_null, |
808bd9bf | 353 | side_arg_list(side_arg_dynamic(side_arg_dynamic_null(side_attr_list())))); |
465e5e7e MD |
354 | } |
355 | ||
89747802 | 356 | side_static_event(my_provider_event_dynamic_struct, |
c208889e | 357 | "myprovider", "mydynamicstruct", SIDE_LOGLEVEL_DEBUG, |
465e5e7e | 358 | side_field_list( |
485b800a | 359 | side_field_dynamic("dynamic", side_attr_list()), |
399c836b MD |
360 | ), |
361 | side_attr_list() | |
465e5e7e MD |
362 | ); |
363 | ||
364 | static | |
c208889e | 365 | void test_dynamic_struct(void) |
465e5e7e | 366 | { |
c208889e | 367 | side_arg_dynamic_define_struct(mystruct, |
465e5e7e | 368 | side_arg_list( |
808bd9bf MD |
369 | side_arg_dynamic_field("a", side_arg_dynamic_u32(43, side_attr_list())), |
370 | side_arg_dynamic_field("b", side_arg_dynamic_string("zzz", side_attr_list())), | |
371 | side_arg_dynamic_field("c", side_arg_dynamic_null(side_attr_list())), | |
8d20e708 MD |
372 | ), |
373 | side_attr_list() | |
465e5e7e MD |
374 | ); |
375 | ||
d5cdb129 | 376 | side_event(my_provider_event_dynamic_struct, |
8d20e708 | 377 | side_arg_list(side_arg_dynamic(side_arg_dynamic_struct(&mystruct)))); |
465e5e7e MD |
378 | } |
379 | ||
89747802 | 380 | side_static_event(my_provider_event_dynamic_nested_struct, |
c208889e | 381 | "myprovider", "mydynamicnestedstruct", SIDE_LOGLEVEL_DEBUG, |
3222d397 | 382 | side_field_list( |
485b800a | 383 | side_field_dynamic("dynamic", side_attr_list()), |
399c836b MD |
384 | ), |
385 | side_attr_list() | |
3222d397 MD |
386 | ); |
387 | ||
388 | static | |
c208889e | 389 | void test_dynamic_nested_struct(void) |
3222d397 | 390 | { |
c208889e | 391 | side_arg_dynamic_define_struct(nested, |
3222d397 | 392 | side_arg_list( |
808bd9bf MD |
393 | side_arg_dynamic_field("a", side_arg_dynamic_u32(43, side_attr_list())), |
394 | side_arg_dynamic_field("b", side_arg_dynamic_u8(55, side_attr_list())), | |
8d20e708 MD |
395 | ), |
396 | side_attr_list() | |
3222d397 | 397 | ); |
c208889e | 398 | side_arg_dynamic_define_struct(nested2, |
3222d397 | 399 | side_arg_list( |
808bd9bf MD |
400 | side_arg_dynamic_field("aa", side_arg_dynamic_u64(128, side_attr_list())), |
401 | side_arg_dynamic_field("bb", side_arg_dynamic_u16(1, side_attr_list())), | |
8d20e708 MD |
402 | ), |
403 | side_attr_list() | |
3222d397 | 404 | ); |
c208889e | 405 | side_arg_dynamic_define_struct(mystruct, |
3222d397 | 406 | side_arg_list( |
8d20e708 MD |
407 | side_arg_dynamic_field("nested", side_arg_dynamic_struct(&nested)), |
408 | side_arg_dynamic_field("nested2", side_arg_dynamic_struct(&nested2)), | |
409 | ), | |
410 | side_attr_list() | |
3222d397 | 411 | ); |
d5cdb129 | 412 | side_event(my_provider_event_dynamic_nested_struct, |
8d20e708 | 413 | side_arg_list(side_arg_dynamic(side_arg_dynamic_struct(&mystruct)))); |
3222d397 MD |
414 | } |
415 | ||
89747802 | 416 | side_static_event(my_provider_event_dynamic_vla_struct, |
c208889e | 417 | "myprovider", "mydynamicvlastruct", SIDE_LOGLEVEL_DEBUG, |
7ce1b78f | 418 | side_field_list( |
485b800a | 419 | side_field_dynamic("dynamic", side_attr_list()), |
399c836b MD |
420 | ), |
421 | side_attr_list() | |
7ce1b78f MD |
422 | ); |
423 | ||
424 | static | |
c208889e | 425 | void test_dynamic_vla_struct(void) |
7ce1b78f | 426 | { |
c208889e | 427 | side_arg_dynamic_define_struct(nested, |
7ce1b78f | 428 | side_arg_list( |
808bd9bf MD |
429 | side_arg_dynamic_field("a", side_arg_dynamic_u32(43, side_attr_list())), |
430 | side_arg_dynamic_field("b", side_arg_dynamic_u8(55, side_attr_list())), | |
8d20e708 MD |
431 | ), |
432 | side_attr_list() | |
7ce1b78f MD |
433 | ); |
434 | side_arg_dynamic_define_vec(myvla, | |
435 | side_arg_list( | |
8d20e708 MD |
436 | side_arg_dynamic_struct(&nested), |
437 | side_arg_dynamic_struct(&nested), | |
438 | side_arg_dynamic_struct(&nested), | |
439 | side_arg_dynamic_struct(&nested), | |
440 | ), | |
441 | side_attr_list() | |
7ce1b78f | 442 | ); |
d5cdb129 | 443 | side_event(my_provider_event_dynamic_vla_struct, |
8d20e708 | 444 | side_arg_list(side_arg_dynamic(side_arg_dynamic_vla(&myvla)))); |
7ce1b78f MD |
445 | } |
446 | ||
89747802 | 447 | side_static_event(my_provider_event_dynamic_struct_vla, |
c208889e | 448 | "myprovider", "mydynamicstructvla", SIDE_LOGLEVEL_DEBUG, |
980bfdc4 | 449 | side_field_list( |
485b800a | 450 | side_field_dynamic("dynamic", side_attr_list()), |
399c836b MD |
451 | ), |
452 | side_attr_list() | |
980bfdc4 MD |
453 | ); |
454 | ||
455 | static | |
c208889e | 456 | void test_dynamic_struct_vla(void) |
980bfdc4 MD |
457 | { |
458 | side_arg_dynamic_define_vec(myvla, | |
948e3e72 | 459 | side_arg_list( |
808bd9bf MD |
460 | side_arg_dynamic_u32(1, side_attr_list()), |
461 | side_arg_dynamic_u32(2, side_attr_list()), | |
462 | side_arg_dynamic_u32(3, side_attr_list()), | |
8d20e708 MD |
463 | ), |
464 | side_attr_list() | |
df075fa5 | 465 | ); |
980bfdc4 | 466 | side_arg_dynamic_define_vec(myvla2, |
948e3e72 | 467 | side_arg_list( |
808bd9bf MD |
468 | side_arg_dynamic_u32(4, side_attr_list()), |
469 | side_arg_dynamic_u64(5, side_attr_list()), | |
470 | side_arg_dynamic_u32(6, side_attr_list()), | |
8d20e708 MD |
471 | ), |
472 | side_attr_list() | |
df075fa5 | 473 | ); |
c208889e | 474 | side_arg_dynamic_define_struct(mystruct, |
980bfdc4 | 475 | side_arg_list( |
8d20e708 MD |
476 | side_arg_dynamic_field("a", side_arg_dynamic_vla(&myvla)), |
477 | side_arg_dynamic_field("b", side_arg_dynamic_vla(&myvla2)), | |
478 | ), | |
479 | side_attr_list() | |
980bfdc4 | 480 | ); |
d5cdb129 | 481 | side_event(my_provider_event_dynamic_struct_vla, |
8d20e708 | 482 | side_arg_list(side_arg_dynamic(side_arg_dynamic_struct(&mystruct)))); |
980bfdc4 MD |
483 | } |
484 | ||
89747802 | 485 | side_static_event(my_provider_event_dynamic_nested_vla, |
948e3e72 MD |
486 | "myprovider", "mydynamicnestedvla", SIDE_LOGLEVEL_DEBUG, |
487 | side_field_list( | |
485b800a | 488 | side_field_dynamic("dynamic", side_attr_list()), |
399c836b MD |
489 | ), |
490 | side_attr_list() | |
948e3e72 MD |
491 | ); |
492 | ||
493 | static | |
494 | void test_dynamic_nested_vla(void) | |
495 | { | |
496 | side_arg_dynamic_define_vec(nestedvla, | |
497 | side_arg_list( | |
808bd9bf MD |
498 | side_arg_dynamic_u32(1, side_attr_list()), |
499 | side_arg_dynamic_u16(2, side_attr_list()), | |
500 | side_arg_dynamic_u32(3, side_attr_list()), | |
8d20e708 MD |
501 | ), |
502 | side_attr_list() | |
948e3e72 MD |
503 | ); |
504 | side_arg_dynamic_define_vec(nestedvla2, | |
505 | side_arg_list( | |
808bd9bf MD |
506 | side_arg_dynamic_u8(4, side_attr_list()), |
507 | side_arg_dynamic_u32(5, side_attr_list()), | |
508 | side_arg_dynamic_u32(6, side_attr_list()), | |
8d20e708 MD |
509 | ), |
510 | side_attr_list() | |
948e3e72 MD |
511 | ); |
512 | side_arg_dynamic_define_vec(myvla, | |
513 | side_arg_list( | |
8d20e708 MD |
514 | side_arg_dynamic_vla(&nestedvla), |
515 | side_arg_dynamic_vla(&nestedvla2), | |
516 | ), | |
517 | side_attr_list() | |
948e3e72 | 518 | ); |
d5cdb129 | 519 | side_event(my_provider_event_dynamic_nested_vla, |
8d20e708 | 520 | side_arg_list(side_arg_dynamic(side_arg_dynamic_vla(&myvla)))); |
948e3e72 MD |
521 | } |
522 | ||
89747802 | 523 | side_static_event_variadic(my_provider_event_variadic, |
19fa6aa2 | 524 | "myprovider", "myvariadicevent", SIDE_LOGLEVEL_DEBUG, |
399c836b MD |
525 | side_field_list(), |
526 | side_attr_list() | |
19fa6aa2 MD |
527 | ); |
528 | ||
529 | static | |
530 | void test_variadic(void) | |
531 | { | |
d5cdb129 | 532 | side_event_variadic(my_provider_event_variadic, |
19fa6aa2 MD |
533 | side_arg_list(), |
534 | side_arg_list( | |
808bd9bf MD |
535 | side_arg_dynamic_field("a", side_arg_dynamic_u32(55, side_attr_list())), |
536 | side_arg_dynamic_field("b", side_arg_dynamic_s8(-4, side_attr_list())), | |
8d20e708 MD |
537 | ), |
538 | side_attr_list() | |
19fa6aa2 MD |
539 | ); |
540 | } | |
541 | ||
89747802 | 542 | side_static_event_variadic(my_provider_event_static_variadic, |
41c4d119 MD |
543 | "myprovider", "mystaticvariadicevent", SIDE_LOGLEVEL_DEBUG, |
544 | side_field_list( | |
485b800a MD |
545 | side_field_u32("abc", side_attr_list()), |
546 | side_field_u16("def", side_attr_list()), | |
399c836b MD |
547 | ), |
548 | side_attr_list() | |
41c4d119 MD |
549 | ); |
550 | ||
551 | static | |
552 | void test_static_variadic(void) | |
553 | { | |
d5cdb129 | 554 | side_event_variadic(my_provider_event_static_variadic, |
41c4d119 MD |
555 | side_arg_list( |
556 | side_arg_u32(1), | |
557 | side_arg_u16(2), | |
558 | ), | |
559 | side_arg_list( | |
808bd9bf MD |
560 | side_arg_dynamic_field("a", side_arg_dynamic_u32(55, side_attr_list())), |
561 | side_arg_dynamic_field("b", side_arg_dynamic_s8(-4, side_attr_list())), | |
8d20e708 MD |
562 | ), |
563 | side_attr_list() | |
41c4d119 MD |
564 | ); |
565 | } | |
566 | ||
89747802 | 567 | side_static_event(my_provider_event_bool, "myprovider", "myeventbool", SIDE_LOGLEVEL_DEBUG, |
4f40d951 | 568 | side_field_list( |
485b800a MD |
569 | side_field_bool("a_false", side_attr_list()), |
570 | side_field_bool("b_true", side_attr_list()), | |
571 | side_field_bool("c_true", side_attr_list()), | |
572 | side_field_bool("d_true", side_attr_list()), | |
573 | side_field_bool("e_true", side_attr_list()), | |
574 | side_field_bool("f_false", side_attr_list()), | |
575 | side_field_bool("g_true", side_attr_list()), | |
399c836b MD |
576 | ), |
577 | side_attr_list() | |
4f40d951 MD |
578 | ); |
579 | ||
580 | static | |
581 | void test_bool(void) | |
582 | { | |
583 | uint32_t a = 0; | |
584 | uint32_t b = 1; | |
585 | uint64_t c = 0x12345678; | |
586 | int16_t d = -32768; | |
587 | bool e = true; | |
588 | bool f = false; | |
589 | uint32_t g = 256; | |
590 | ||
d5cdb129 | 591 | side_event(my_provider_event_bool, |
4f40d951 MD |
592 | side_arg_list( |
593 | side_arg_bool(a), | |
594 | side_arg_bool(b), | |
595 | side_arg_bool(c), | |
596 | side_arg_bool(d), | |
597 | side_arg_bool(e), | |
598 | side_arg_bool(f), | |
599 | side_arg_bool(g), | |
600 | ) | |
601 | ); | |
602 | } | |
603 | ||
89747802 | 604 | side_static_event_variadic(my_provider_event_dynamic_bool, |
4f40d951 | 605 | "myprovider", "mydynamicbool", SIDE_LOGLEVEL_DEBUG, |
399c836b MD |
606 | side_field_list(), |
607 | side_attr_list() | |
4f40d951 MD |
608 | ); |
609 | ||
610 | static | |
611 | void test_dynamic_bool(void) | |
612 | { | |
d5cdb129 | 613 | side_event_variadic(my_provider_event_dynamic_bool, |
4f40d951 MD |
614 | side_arg_list(), |
615 | side_arg_list( | |
808bd9bf MD |
616 | side_arg_dynamic_field("a_true", side_arg_dynamic_bool(55, side_attr_list())), |
617 | side_arg_dynamic_field("b_true", side_arg_dynamic_bool(-4, side_attr_list())), | |
618 | side_arg_dynamic_field("c_false", side_arg_dynamic_bool(0, side_attr_list())), | |
619 | side_arg_dynamic_field("d_true", side_arg_dynamic_bool(256, side_attr_list())), | |
8d20e708 MD |
620 | ), |
621 | side_attr_list() | |
4f40d951 MD |
622 | ); |
623 | } | |
624 | ||
89747802 | 625 | side_static_event(my_provider_event_dynamic_vla_visitor, |
8ceca0cd MD |
626 | "myprovider", "mydynamicvlavisitor", SIDE_LOGLEVEL_DEBUG, |
627 | side_field_list( | |
485b800a | 628 | side_field_dynamic("dynamic", side_attr_list()), |
399c836b MD |
629 | ), |
630 | side_attr_list() | |
8ceca0cd MD |
631 | ); |
632 | ||
633 | struct app_dynamic_vla_visitor_ctx { | |
634 | const uint32_t *ptr; | |
635 | uint32_t length; | |
636 | }; | |
637 | ||
638 | static | |
639 | enum side_visitor_status test_dynamic_vla_visitor(const struct side_tracer_dynamic_vla_visitor_ctx *tracer_ctx, void *_ctx) | |
640 | { | |
641 | struct app_dynamic_vla_visitor_ctx *ctx = (struct app_dynamic_vla_visitor_ctx *) _ctx; | |
642 | uint32_t length = ctx->length, i; | |
643 | ||
644 | for (i = 0; i < length; i++) { | |
645 | const struct side_arg_dynamic_vec elem = { | |
646 | .dynamic_type = SIDE_DYNAMIC_TYPE_U32, | |
647 | .u = { | |
8d20e708 MD |
648 | .side_basic = { |
649 | .attr = NULL, | |
650 | .nr_attr = 0, | |
651 | .u = { | |
652 | .side_u32 = ctx->ptr[i], | |
653 | }, | |
654 | }, | |
8ceca0cd MD |
655 | }, |
656 | }; | |
657 | if (tracer_ctx->write_elem(tracer_ctx, &elem) != SIDE_VISITOR_STATUS_OK) | |
658 | return SIDE_VISITOR_STATUS_ERROR; | |
659 | } | |
660 | return SIDE_VISITOR_STATUS_OK; | |
661 | } | |
662 | ||
663 | static uint32_t testarray_dynamic_vla[] = { 1, 2, 3, 4, 5, 6, 7, 8 }; | |
664 | ||
665 | static | |
666 | void test_dynamic_vla_with_visitor(void) | |
667 | { | |
d5cdb129 | 668 | side_event_cond(my_provider_event_dynamic_vla_visitor) { |
8ceca0cd MD |
669 | struct app_dynamic_vla_visitor_ctx ctx = { |
670 | .ptr = testarray_dynamic_vla, | |
671 | .length = SIDE_ARRAY_SIZE(testarray_dynamic_vla), | |
672 | }; | |
d5cdb129 | 673 | side_event_call(my_provider_event_dynamic_vla_visitor, |
8ceca0cd MD |
674 | side_arg_list( |
675 | side_arg_dynamic( | |
808bd9bf | 676 | side_arg_dynamic_vla_visitor(test_dynamic_vla_visitor, &ctx, side_attr_list()) |
8ceca0cd MD |
677 | ) |
678 | ) | |
679 | ); | |
680 | } | |
681 | } | |
682 | ||
89747802 | 683 | side_static_event(my_provider_event_dynamic_struct_visitor, |
2b359235 MD |
684 | "myprovider", "mydynamicstructvisitor", SIDE_LOGLEVEL_DEBUG, |
685 | side_field_list( | |
485b800a | 686 | side_field_dynamic("dynamic", side_attr_list()), |
399c836b MD |
687 | ), |
688 | side_attr_list() | |
2b359235 MD |
689 | ); |
690 | ||
691 | struct struct_visitor_pair { | |
692 | const char *name; | |
693 | uint32_t value; | |
694 | }; | |
695 | ||
696 | struct app_dynamic_struct_visitor_ctx { | |
697 | const struct struct_visitor_pair *ptr; | |
698 | uint32_t length; | |
699 | }; | |
700 | ||
701 | static | |
702 | enum side_visitor_status test_dynamic_struct_visitor(const struct side_tracer_dynamic_struct_visitor_ctx *tracer_ctx, void *_ctx) | |
703 | { | |
704 | struct app_dynamic_struct_visitor_ctx *ctx = (struct app_dynamic_struct_visitor_ctx *) _ctx; | |
705 | uint32_t length = ctx->length, i; | |
706 | ||
707 | for (i = 0; i < length; i++) { | |
708 | struct side_arg_dynamic_event_field dynamic_field = { | |
709 | .field_name = ctx->ptr[i].name, | |
710 | .elem = { | |
711 | .dynamic_type = SIDE_DYNAMIC_TYPE_U32, | |
712 | .u = { | |
8d20e708 MD |
713 | .side_basic = { |
714 | .nr_attr = 0, | |
715 | .attr = NULL, | |
716 | .u = { | |
717 | .side_u32 = ctx->ptr[i].value, | |
718 | }, | |
719 | }, | |
2b359235 MD |
720 | }, |
721 | }, | |
722 | }; | |
723 | if (tracer_ctx->write_field(tracer_ctx, &dynamic_field) != SIDE_VISITOR_STATUS_OK) | |
724 | return SIDE_VISITOR_STATUS_ERROR; | |
725 | } | |
726 | return SIDE_VISITOR_STATUS_OK; | |
727 | } | |
728 | ||
729 | static struct struct_visitor_pair testarray_dynamic_struct[] = { | |
730 | { "a", 1, }, | |
731 | { "b", 2, }, | |
732 | { "c", 3, }, | |
733 | { "d", 4, }, | |
734 | }; | |
735 | ||
736 | static | |
737 | void test_dynamic_struct_with_visitor(void) | |
738 | { | |
d5cdb129 | 739 | side_event_cond(my_provider_event_dynamic_struct_visitor) { |
2b359235 MD |
740 | struct app_dynamic_struct_visitor_ctx ctx = { |
741 | .ptr = testarray_dynamic_struct, | |
742 | .length = SIDE_ARRAY_SIZE(testarray_dynamic_struct), | |
743 | }; | |
d5cdb129 | 744 | side_event_call(my_provider_event_dynamic_struct_visitor, |
2b359235 MD |
745 | side_arg_list( |
746 | side_arg_dynamic( | |
808bd9bf | 747 | side_arg_dynamic_struct_visitor(test_dynamic_struct_visitor, &ctx, side_attr_list()) |
2b359235 MD |
748 | ) |
749 | ) | |
750 | ); | |
751 | } | |
752 | } | |
753 | ||
89747802 | 754 | side_static_event(my_provider_event_user_attribute, "myprovider", "myevent_user_attribute", SIDE_LOGLEVEL_DEBUG, |
65010f43 | 755 | side_field_list( |
485b800a MD |
756 | side_field_u32("abc", side_attr_list()), |
757 | side_field_s64("def", side_attr_list()), | |
399c836b MD |
758 | ), |
759 | side_attr_list( | |
bc3c89b3 MD |
760 | side_attr("user_attribute_a", side_attr_string("val1")), |
761 | side_attr("user_attribute_b", side_attr_string("val2")), | |
65010f43 MD |
762 | ) |
763 | ); | |
764 | ||
765 | static | |
766 | void test_event_user_attribute(void) | |
767 | { | |
d5cdb129 | 768 | side_event(my_provider_event_user_attribute, side_arg_list(side_arg_u32(1), side_arg_s64(2))); |
65010f43 MD |
769 | } |
770 | ||
89747802 | 771 | side_static_event(my_provider_field_user_attribute, "myprovider", "myevent_field_attribute", SIDE_LOGLEVEL_DEBUG, |
a848763d | 772 | side_field_list( |
485b800a | 773 | side_field_u32("abc", |
a848763d | 774 | side_attr_list( |
bc3c89b3 MD |
775 | side_attr("user_attribute_a", side_attr_string("val1")), |
776 | side_attr("user_attribute_b", side_attr_u32(2)), | |
a848763d MD |
777 | ) |
778 | ), | |
485b800a | 779 | side_field_s64("def", |
a848763d | 780 | side_attr_list( |
bc3c89b3 MD |
781 | side_attr("user_attribute_c", side_attr_string("val3")), |
782 | side_attr("user_attribute_d", side_attr_s64(-5)), | |
a848763d MD |
783 | ) |
784 | ), | |
785 | ), | |
786 | side_attr_list() | |
787 | ); | |
788 | ||
789 | static | |
790 | void test_field_user_attribute(void) | |
791 | { | |
d5cdb129 | 792 | side_event(my_provider_field_user_attribute, side_arg_list(side_arg_u32(1), side_arg_s64(2))); |
a848763d MD |
793 | } |
794 | ||
89747802 | 795 | side_static_event_variadic(my_provider_event_variadic_attr, |
808bd9bf MD |
796 | "myprovider", "myvariadiceventattr", SIDE_LOGLEVEL_DEBUG, |
797 | side_field_list(), | |
798 | side_attr_list() | |
799 | ); | |
800 | ||
801 | static | |
802 | void test_variadic_attr(void) | |
803 | { | |
d5cdb129 | 804 | side_event_variadic(my_provider_event_variadic_attr, |
808bd9bf MD |
805 | side_arg_list(), |
806 | side_arg_list( | |
807 | side_arg_dynamic_field("a", | |
808 | side_arg_dynamic_u32(55, | |
809 | side_attr_list( | |
bc3c89b3 MD |
810 | side_attr("user_attribute_c", side_attr_string("valX")), |
811 | side_attr("user_attribute_d", side_attr_u8(55)), | |
808bd9bf MD |
812 | ) |
813 | ) | |
814 | ), | |
815 | side_arg_dynamic_field("b", | |
816 | side_arg_dynamic_s8(-4, | |
817 | side_attr_list( | |
bc3c89b3 MD |
818 | side_attr("X", side_attr_u8(1)), |
819 | side_attr("Y", side_attr_s8(2)), | |
808bd9bf MD |
820 | ) |
821 | ) | |
822 | ), | |
8d20e708 MD |
823 | ), |
824 | side_attr_list() | |
808bd9bf MD |
825 | ); |
826 | } | |
827 | ||
89747802 | 828 | side_static_event_variadic(my_provider_event_variadic_vla_attr, |
808bd9bf MD |
829 | "myprovider", "myvariadiceventvlaattr", SIDE_LOGLEVEL_DEBUG, |
830 | side_field_list(), | |
831 | side_attr_list() | |
832 | ); | |
833 | ||
834 | static | |
835 | void test_variadic_vla_attr(void) | |
836 | { | |
837 | side_arg_dynamic_define_vec(myvla, | |
838 | side_arg_list( | |
839 | side_arg_dynamic_u32(1, | |
840 | side_attr_list( | |
bc3c89b3 MD |
841 | side_attr("Z", side_attr_u8(0)), |
842 | side_attr("A", side_attr_u8(123)), | |
808bd9bf MD |
843 | ) |
844 | ), | |
845 | side_arg_dynamic_u32(2, side_attr_list()), | |
846 | side_arg_dynamic_u32(3, side_attr_list()), | |
8d20e708 MD |
847 | ), |
848 | side_attr_list( | |
849 | side_attr("X", side_attr_u8(1)), | |
850 | side_attr("Y", side_attr_u8(2)), | |
808bd9bf MD |
851 | ) |
852 | ); | |
d5cdb129 | 853 | side_event_variadic(my_provider_event_variadic_vla_attr, |
808bd9bf MD |
854 | side_arg_list(), |
855 | side_arg_list( | |
8d20e708 MD |
856 | side_arg_dynamic_field("a", side_arg_dynamic_vla(&myvla)), |
857 | ), | |
858 | side_attr_list() | |
808bd9bf MD |
859 | ); |
860 | } | |
861 | ||
89747802 | 862 | side_static_event_variadic(my_provider_event_variadic_struct_attr, |
808bd9bf MD |
863 | "myprovider", "myvariadiceventstructattr", SIDE_LOGLEVEL_DEBUG, |
864 | side_field_list(), | |
865 | side_attr_list() | |
866 | ); | |
867 | ||
868 | static | |
869 | void test_variadic_struct_attr(void) | |
870 | { | |
d5cdb129 | 871 | side_event_cond(my_provider_event_variadic_struct_attr) { |
808bd9bf MD |
872 | side_arg_dynamic_define_struct(mystruct, |
873 | side_arg_list( | |
874 | side_arg_dynamic_field("a", | |
875 | side_arg_dynamic_u32(43, | |
876 | side_attr_list( | |
bc3c89b3 | 877 | side_attr("A", side_attr_bool(true)), |
808bd9bf MD |
878 | ) |
879 | ) | |
880 | ), | |
881 | side_arg_dynamic_field("b", side_arg_dynamic_u8(55, side_attr_list())), | |
8d20e708 MD |
882 | ), |
883 | side_attr_list( | |
884 | side_attr("X", side_attr_u8(1)), | |
885 | side_attr("Y", side_attr_u8(2)), | |
808bd9bf MD |
886 | ) |
887 | ); | |
d5cdb129 | 888 | side_event_call_variadic(my_provider_event_variadic_struct_attr, |
808bd9bf MD |
889 | side_arg_list(), |
890 | side_arg_list( | |
8d20e708 MD |
891 | side_arg_dynamic_field("a", side_arg_dynamic_struct(&mystruct)), |
892 | ), | |
893 | side_attr_list() | |
808bd9bf MD |
894 | ); |
895 | } | |
896 | } | |
897 | ||
89747802 | 898 | side_static_event(my_provider_event_float, "myprovider", "myeventfloat", SIDE_LOGLEVEL_DEBUG, |
fb25b355 MD |
899 | side_field_list( |
900 | #if __HAVE_FLOAT16 | |
485b800a | 901 | side_field_float_binary16("binary16", side_attr_list()), |
fb25b355 MD |
902 | #endif |
903 | #if __HAVE_FLOAT32 | |
485b800a | 904 | side_field_float_binary32("binary32", side_attr_list()), |
fb25b355 MD |
905 | #endif |
906 | #if __HAVE_FLOAT64 | |
485b800a | 907 | side_field_float_binary64("binary64", side_attr_list()), |
fb25b355 MD |
908 | #endif |
909 | #if __HAVE_FLOAT128 | |
485b800a | 910 | side_field_float_binary128("binary128", side_attr_list()), |
fb25b355 MD |
911 | #endif |
912 | ), | |
913 | side_attr_list() | |
914 | ); | |
915 | ||
916 | static | |
917 | void test_float(void) | |
918 | { | |
d5cdb129 | 919 | side_event(my_provider_event_float, |
fb25b355 MD |
920 | side_arg_list( |
921 | #if __HAVE_FLOAT16 | |
922 | side_arg_float_binary16(1.1), | |
923 | #endif | |
924 | #if __HAVE_FLOAT32 | |
925 | side_arg_float_binary32(2.2), | |
926 | #endif | |
927 | #if __HAVE_FLOAT64 | |
928 | side_arg_float_binary64(3.3), | |
929 | #endif | |
930 | #if __HAVE_FLOAT128 | |
931 | side_arg_float_binary128(4.4), | |
932 | #endif | |
933 | ) | |
934 | ); | |
935 | } | |
936 | ||
89747802 | 937 | side_static_event_variadic(my_provider_event_variadic_float, |
fb25b355 MD |
938 | "myprovider", "myvariadicfloat", SIDE_LOGLEVEL_DEBUG, |
939 | side_field_list(), | |
940 | side_attr_list() | |
941 | ); | |
942 | ||
943 | static | |
944 | void test_variadic_float(void) | |
945 | { | |
d5cdb129 | 946 | side_event_variadic(my_provider_event_variadic_float, |
fb25b355 MD |
947 | side_arg_list(), |
948 | side_arg_list( | |
949 | #if __HAVE_FLOAT16 | |
950 | side_arg_dynamic_field("binary16", | |
951 | side_arg_dynamic_float_binary16(1.1, side_attr_list()) | |
952 | ), | |
953 | #endif | |
954 | #if __HAVE_FLOAT32 | |
955 | side_arg_dynamic_field("binary32", | |
956 | side_arg_dynamic_float_binary32(2.2, side_attr_list()) | |
957 | ), | |
958 | #endif | |
959 | #if __HAVE_FLOAT64 | |
960 | side_arg_dynamic_field("binary64", | |
961 | side_arg_dynamic_float_binary64(3.3, side_attr_list()) | |
962 | ), | |
963 | #endif | |
964 | #if __HAVE_FLOAT128 | |
965 | side_arg_dynamic_field("binary128", | |
966 | side_arg_dynamic_float_binary128(4.4, side_attr_list()) | |
967 | ), | |
968 | #endif | |
8d20e708 MD |
969 | ), |
970 | side_attr_list() | |
fb25b355 MD |
971 | ); |
972 | } | |
973 | ||
79f677ba | 974 | static side_define_enum(myenum, |
66cff328 | 975 | side_enum_mapping_list( |
79f677ba MD |
976 | side_enum_mapping_range("one-ten", 1, 10), |
977 | side_enum_mapping_range("100-200", 100, 200), | |
978 | side_enum_mapping_value("200", 200), | |
979 | side_enum_mapping_value("300", 300), | |
d4328528 MD |
980 | ), |
981 | side_attr_list() | |
79f677ba MD |
982 | ); |
983 | ||
89747802 | 984 | side_static_event(my_provider_event_enum, "myprovider", "myeventenum", SIDE_LOGLEVEL_DEBUG, |
79f677ba | 985 | side_field_list( |
f89c4ad1 MD |
986 | side_field_enum("5", &myenum, side_elem(side_type_u32(side_attr_list()))), |
987 | side_field_enum("400", &myenum, side_elem(side_type_u64(side_attr_list()))), | |
988 | side_field_enum("200", &myenum, side_elem(side_type_u8(side_attr_list()))), | |
989 | side_field_enum("-100", &myenum, side_elem(side_type_s8(side_attr_list()))), | |
79f677ba MD |
990 | ), |
991 | side_attr_list() | |
992 | ); | |
993 | ||
994 | static | |
995 | void test_enum(void) | |
996 | { | |
d5cdb129 | 997 | side_event(my_provider_event_enum, |
79f677ba | 998 | side_arg_list( |
d8be25de MD |
999 | side_arg_u32(5), |
1000 | side_arg_u64(400), | |
1001 | side_arg_u8(200), | |
1002 | side_arg_s8(-100), | |
79f677ba MD |
1003 | ) |
1004 | ); | |
1005 | } | |
1006 | ||
ea32e5fc | 1007 | /* A bitmap enum maps bits to labels. */ |
66cff328 MD |
1008 | static side_define_enum_bitmap(myenum_bitmap, |
1009 | side_enum_bitmap_mapping_list( | |
1010 | side_enum_bitmap_mapping_value("0", 0), | |
1011 | side_enum_bitmap_mapping_range("1-2", 1, 2), | |
1012 | side_enum_bitmap_mapping_range("2-4", 2, 4), | |
1013 | side_enum_bitmap_mapping_value("3", 3), | |
1014 | side_enum_bitmap_mapping_value("30", 30), | |
1015 | side_enum_bitmap_mapping_value("63", 63), | |
af6aa6e1 MD |
1016 | side_enum_bitmap_mapping_range("158-160", 158, 160), |
1017 | side_enum_bitmap_mapping_value("159", 159), | |
1018 | side_enum_bitmap_mapping_range("500-700", 500, 700), | |
d4328528 MD |
1019 | ), |
1020 | side_attr_list() | |
ea32e5fc MD |
1021 | ); |
1022 | ||
89747802 | 1023 | side_static_event(my_provider_event_enum_bitmap, "myprovider", "myeventenumbitmap", SIDE_LOGLEVEL_DEBUG, |
ea32e5fc | 1024 | side_field_list( |
f89c4ad1 MD |
1025 | side_field_enum_bitmap("bit_0", &myenum_bitmap, side_elem(side_type_u32(side_attr_list()))), |
1026 | side_field_enum_bitmap("bit_1", &myenum_bitmap, side_elem(side_type_u32(side_attr_list()))), | |
1027 | side_field_enum_bitmap("bit_2", &myenum_bitmap, side_elem(side_type_u8(side_attr_list()))), | |
1028 | side_field_enum_bitmap("bit_3", &myenum_bitmap, side_elem(side_type_u8(side_attr_list()))), | |
1029 | side_field_enum_bitmap("bit_30", &myenum_bitmap, side_elem(side_type_u32(side_attr_list()))), | |
1030 | side_field_enum_bitmap("bit_31", &myenum_bitmap, side_elem(side_type_u32(side_attr_list()))), | |
1031 | side_field_enum_bitmap("bit_63", &myenum_bitmap, side_elem(side_type_u64(side_attr_list()))), | |
1032 | side_field_enum_bitmap("bits_1+63", &myenum_bitmap, side_elem(side_type_u64(side_attr_list()))), | |
4cc2880b | 1033 | side_field_enum_bitmap("byte_bit_2", &myenum_bitmap, side_elem(side_type_byte(side_attr_list()))), |
f89c4ad1 MD |
1034 | side_field_enum_bitmap("bit_159", &myenum_bitmap, |
1035 | side_elem(side_type_array(side_elem(side_type_u32(side_attr_list())), 5, side_attr_list()))), | |
1036 | side_field_enum_bitmap("bit_159", &myenum_bitmap, | |
1037 | side_elem(side_type_vla(side_elem(side_type_u32(side_attr_list())), side_attr_list()))), | |
ea32e5fc MD |
1038 | ), |
1039 | side_attr_list() | |
1040 | ); | |
1041 | ||
1042 | static | |
1043 | void test_enum_bitmap(void) | |
1044 | { | |
af6aa6e1 MD |
1045 | side_event_cond(my_provider_event_enum_bitmap) { |
1046 | side_arg_define_vec(myarray, | |
1047 | side_arg_list( | |
1048 | side_arg_u32(0), | |
1049 | side_arg_u32(0), | |
1050 | side_arg_u32(0), | |
1051 | side_arg_u32(0), | |
1052 | side_arg_u32(0x80000000), /* bit 159 */ | |
1053 | ) | |
1054 | ); | |
1055 | side_event_call(my_provider_event_enum_bitmap, | |
1056 | side_arg_list( | |
bab5d6e4 MD |
1057 | side_arg_u32(1 << 0), |
1058 | side_arg_u32(1 << 1), | |
1059 | side_arg_u8(1 << 2), | |
1060 | side_arg_u8(1 << 3), | |
1061 | side_arg_u32(1 << 30), | |
1062 | side_arg_u32(1 << 31), | |
1063 | side_arg_u64(1ULL << 63), | |
1064 | side_arg_u64((1ULL << 1) | (1ULL << 63)), | |
4cc2880b | 1065 | side_arg_byte(1 << 2), |
bab5d6e4 MD |
1066 | side_arg_array(&myarray), |
1067 | side_arg_vla(&myarray), | |
af6aa6e1 MD |
1068 | ) |
1069 | ); | |
1070 | } | |
ea32e5fc MD |
1071 | } |
1072 | ||
7aec0d09 MD |
1073 | static uint8_t blob_fixint[] = { 0x55, 0x44, 0x33, 0x22, 0x11 }; |
1074 | ||
89747802 | 1075 | side_static_event_variadic(my_provider_event_blob, "myprovider", "myeventblob", SIDE_LOGLEVEL_DEBUG, |
7aec0d09 | 1076 | side_field_list( |
f7653b43 MD |
1077 | side_field_byte("blobfield", side_attr_list()), |
1078 | side_field_array("arrayblob", side_elem(side_type_byte(side_attr_list())), 3, side_attr_list()), | |
1079 | side_field_array("arrayblobfix", side_elem(side_type_byte(side_attr_list())), SIDE_ARRAY_SIZE(blob_fixint), side_attr_list()), | |
1080 | side_field_vla("vlablobfix", side_elem(side_type_byte(side_attr_list())), side_attr_list()), | |
7aec0d09 MD |
1081 | ), |
1082 | side_attr_list() | |
1083 | ); | |
1084 | ||
1085 | static | |
1086 | void test_blob(void) | |
1087 | { | |
d5cdb129 | 1088 | side_event_cond(my_provider_event_blob) { |
f7653b43 | 1089 | side_arg_define_vec(myarray, side_arg_list(side_arg_byte(1), side_arg_byte(2), side_arg_byte(3))); |
199e7aa9 MD |
1090 | side_arg_dynamic_define_vec(myvla, |
1091 | side_arg_list( | |
f7653b43 MD |
1092 | side_arg_dynamic_byte(0x22, side_attr_list()), |
1093 | side_arg_dynamic_byte(0x33, side_attr_list()), | |
8d20e708 MD |
1094 | ), |
1095 | side_attr_list() | |
199e7aa9 | 1096 | ); |
d5cdb129 | 1097 | side_event_call_variadic(my_provider_event_blob, |
7aec0d09 | 1098 | side_arg_list( |
f7653b43 | 1099 | side_arg_byte(0x55), |
7aec0d09 | 1100 | side_arg_array(&myarray), |
f7653b43 MD |
1101 | side_arg_array_byte(blob_fixint), |
1102 | side_arg_vla_byte(blob_fixint, SIDE_ARRAY_SIZE(blob_fixint)), | |
199e7aa9 MD |
1103 | ), |
1104 | side_arg_list( | |
1105 | side_arg_dynamic_field("varblobfield", | |
f7653b43 | 1106 | side_arg_dynamic_byte(0x55, side_attr_list()) |
199e7aa9 | 1107 | ), |
8d20e708 MD |
1108 | side_arg_dynamic_field("varblobvla", side_arg_dynamic_vla(&myvla)), |
1109 | ), | |
1110 | side_attr_list() | |
7aec0d09 MD |
1111 | ); |
1112 | } | |
1113 | } | |
ea32e5fc | 1114 | |
89747802 | 1115 | side_static_event_variadic(my_provider_event_format_string, |
71aa8975 MD |
1116 | "myprovider", "myeventformatstring", SIDE_LOGLEVEL_DEBUG, |
1117 | side_field_list( | |
1118 | side_field_string("fmt", side_attr_list()), | |
1119 | ), | |
1120 | side_attr_list( | |
1121 | side_attr("lang.c.format_string", side_attr_bool(true)), | |
1122 | ) | |
1123 | ); | |
1124 | ||
1125 | static | |
1126 | void test_fmt_string(void) | |
1127 | { | |
71aa8975 MD |
1128 | side_event_cond(my_provider_event_format_string) { |
1129 | side_arg_dynamic_define_vec(args, | |
1130 | side_arg_list( | |
1131 | side_arg_dynamic_string("blah", side_attr_list()), | |
1132 | side_arg_dynamic_s32(123, side_attr_list()), | |
1133 | ), | |
1134 | side_attr_list() | |
1135 | ); | |
1136 | side_event_call_variadic(my_provider_event_format_string, | |
1137 | side_arg_list( | |
1138 | side_arg_string("This is a formatted string with str: %s int: %d"), | |
1139 | ), | |
1140 | side_arg_list( | |
1141 | side_arg_dynamic_field("arguments", side_arg_dynamic_vla(&args)), | |
1142 | ), | |
1143 | side_attr_list() | |
1144 | ); | |
1145 | } | |
1146 | } | |
1147 | ||
f611d0c3 MD |
1148 | int main() |
1149 | { | |
1150 | test_fields(); | |
89747802 MD |
1151 | test_event_hidden(); |
1152 | test_event_export(); | |
c7a14585 | 1153 | test_struct_literal(); |
f611d0c3 MD |
1154 | test_struct(); |
1155 | test_array(); | |
1156 | test_vla(); | |
1157 | test_vla_visitor(); | |
cdd6e858 | 1158 | test_vla_visitor_2d(); |
ba845af5 | 1159 | test_array_fixint(); |
1533629f | 1160 | test_vla_fixint(); |
a2e2357e MD |
1161 | test_dynamic_basic_type(); |
1162 | test_dynamic_vla(); | |
465e5e7e | 1163 | test_dynamic_null(); |
c208889e MD |
1164 | test_dynamic_struct(); |
1165 | test_dynamic_nested_struct(); | |
1166 | test_dynamic_vla_struct(); | |
1167 | test_dynamic_struct_vla(); | |
948e3e72 | 1168 | test_dynamic_nested_vla(); |
19fa6aa2 | 1169 | test_variadic(); |
41c4d119 | 1170 | test_static_variadic(); |
4f40d951 MD |
1171 | test_bool(); |
1172 | test_dynamic_bool(); | |
8ceca0cd | 1173 | test_dynamic_vla_with_visitor(); |
2b359235 | 1174 | test_dynamic_struct_with_visitor(); |
65010f43 | 1175 | test_event_user_attribute(); |
a848763d | 1176 | test_field_user_attribute(); |
808bd9bf MD |
1177 | test_variadic_attr(); |
1178 | test_variadic_vla_attr(); | |
1179 | test_variadic_struct_attr(); | |
fb25b355 MD |
1180 | test_float(); |
1181 | test_variadic_float(); | |
79f677ba | 1182 | test_enum(); |
ea32e5fc | 1183 | test_enum_bitmap(); |
7aec0d09 | 1184 | test_blob(); |
71aa8975 | 1185 | test_fmt_string(); |
f611d0c3 MD |
1186 | return 0; |
1187 | } |