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