Implement support for host/le/be integer and float endianness
[libside.git] / src / test.c
... / ...
CommitLineData
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>
10#include <stdbool.h>
11
12#include <side/trace.h>
13#include "tracer.h"
14
15/* User code example */
16
17side_static_event(my_provider_event, "myprovider", "myevent", SIDE_LOGLEVEL_DEBUG,
18 side_field_list(
19 side_field_u32("abc", side_attr_list()),
20 side_field_s64("def", side_attr_list()),
21 side_field_dynamic("dynamic", side_attr_list()),
22 ),
23 side_attr_list()
24);
25
26static
27void test_fields(void)
28{
29 uint32_t uw = 42;
30 int64_t sdw = -500;
31
32 side_event(my_provider_event, side_arg_list(side_arg_u32(uw), side_arg_s64(sdw),
33 side_arg_dynamic(side_arg_dynamic_string("zzz", side_attr_list()))));
34}
35
36side_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
43static
44void test_event_hidden(void)
45{
46 side_event(my_provider_event_hidden, side_arg_list(side_arg_u32(2)));
47}
48
49side_declare_event(my_provider_event_export);
50
51side_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
58static
59void test_event_export(void)
60{
61 side_event(my_provider_event_export, side_arg_list(side_arg_u32(2)));
62}
63
64side_static_event(my_provider_event_struct_literal, "myprovider", "myeventstructliteral", SIDE_LOGLEVEL_DEBUG,
65 side_field_list(
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 )
74 ),
75 side_field_u8("z", side_attr_list()),
76 ),
77 side_attr_list()
78);
79
80static
81void test_struct_literal(void)
82{
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
89static 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
97side_static_event(my_provider_event_struct, "myprovider", "myeventstruct", SIDE_LOGLEVEL_DEBUG,
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
105static
106void test_struct(void)
107{
108 side_event_cond(my_provider_event_struct) {
109 side_arg_define_vec(mystruct, side_arg_list(side_arg_u32(21), side_arg_s64(22)));
110 side_event_call(my_provider_event_struct, side_arg_list(side_arg_struct(&mystruct), side_arg_u8(55)));
111 }
112}
113
114side_static_event(my_provider_event_array, "myprovider", "myarray", SIDE_LOGLEVEL_DEBUG,
115 side_field_list(
116 side_field_array("arr", side_elem(side_type_u32(side_attr_list())), 3, side_attr_list()),
117 side_field_s64("v", side_attr_list()),
118 ),
119 side_attr_list()
120);
121
122static
123void test_array(void)
124{
125 side_event_cond(my_provider_event_array) {
126 side_arg_define_vec(myarray, side_arg_list(side_arg_u32(1), side_arg_u32(2), side_arg_u32(3)));
127 side_event_call(my_provider_event_array, side_arg_list(side_arg_array(&myarray), side_arg_s64(42)));
128 }
129}
130
131side_static_event(my_provider_event_vla, "myprovider", "myvla", SIDE_LOGLEVEL_DEBUG,
132 side_field_list(
133 side_field_vla("vla", side_elem(side_type_u32(side_attr_list())), side_attr_list()),
134 side_field_s64("v", side_attr_list()),
135 ),
136 side_attr_list()
137);
138
139static
140void test_vla(void)
141{
142 side_event_cond(my_provider_event_vla) {
143 side_arg_define_vec(myvla, side_arg_list(side_arg_u32(1), side_arg_u32(2), side_arg_u32(3)));
144 side_event_call(my_provider_event_vla, side_arg_list(side_arg_vla(&myvla), side_arg_s64(42)));
145 }
146}
147
148/* 1D array visitor */
149
150struct app_visitor_ctx {
151 const uint32_t *ptr;
152 uint32_t length;
153};
154
155static
156enum side_visitor_status test_visitor(const struct side_tracer_visitor_ctx *tracer_ctx, void *_ctx)
157{
158 struct app_visitor_ctx *ctx = (struct app_visitor_ctx *) _ctx;
159 uint32_t length = ctx->length, i;
160
161 for (i = 0; i < length; i++) {
162 const struct side_arg_vec elem = side_arg_u32(ctx->ptr[i]);
163
164 if (tracer_ctx->write_elem(tracer_ctx, &elem) != SIDE_VISITOR_STATUS_OK)
165 return SIDE_VISITOR_STATUS_ERROR;
166 }
167 return SIDE_VISITOR_STATUS_OK;
168}
169
170static uint32_t testarray[] = { 1, 2, 3, 4, 5, 6, 7, 8 };
171
172side_static_event(my_provider_event_vla_visitor, "myprovider", "myvlavisit", SIDE_LOGLEVEL_DEBUG,
173 side_field_list(
174 side_field_vla_visitor("vlavisit", side_elem(side_type_u32(side_attr_list())), test_visitor, side_attr_list()),
175 side_field_s64("v", side_attr_list()),
176 ),
177 side_attr_list()
178);
179
180static
181void test_vla_visitor(void)
182{
183 side_event_cond(my_provider_event_vla_visitor) {
184 struct app_visitor_ctx ctx = {
185 .ptr = testarray,
186 .length = SIDE_ARRAY_SIZE(testarray),
187 };
188 side_event_call(my_provider_event_vla_visitor, side_arg_list(side_arg_vla_visitor(&ctx), side_arg_s64(42)));
189 }
190}
191
192/* 2D array visitor */
193
194struct app_visitor_2d_inner_ctx {
195 const uint32_t *ptr;
196 uint32_t length;
197};
198
199static
200enum 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++) {
206 const struct side_arg_vec elem = side_arg_u32(ctx->ptr[i]);
207
208 if (tracer_ctx->write_elem(tracer_ctx, &elem) != SIDE_VISITOR_STATUS_OK)
209 return SIDE_VISITOR_STATUS_ERROR;
210 }
211 return SIDE_VISITOR_STATUS_OK;
212}
213
214struct app_visitor_2d_outer_ctx {
215 const uint32_t (*ptr)[2];
216 uint32_t length;
217};
218
219static
220enum 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);
231 if (tracer_ctx->write_elem(tracer_ctx, &elem) != SIDE_VISITOR_STATUS_OK)
232 return SIDE_VISITOR_STATUS_ERROR;
233 }
234 return SIDE_VISITOR_STATUS_OK;
235}
236
237static uint32_t testarray2d[][2] = {
238 { 1, 2 },
239 { 33, 44 },
240 { 55, 66 },
241};
242
243side_static_event(my_provider_event_vla_visitor2d, "myprovider", "myvlavisit2d", SIDE_LOGLEVEL_DEBUG,
244 side_field_list(
245 side_field_vla_visitor("vlavisit2d",
246 side_elem(
247 side_type_vla_visitor(
248 side_elem(side_type_u32(side_attr_list())),
249 test_inner_visitor,
250 side_attr_list())
251 ), test_outer_visitor, side_attr_list()),
252 side_field_s64("v", side_attr_list()),
253 ),
254 side_attr_list()
255);
256
257static
258void test_vla_visitor_2d(void)
259{
260 side_event_cond(my_provider_event_vla_visitor2d) {
261 struct app_visitor_2d_outer_ctx ctx = {
262 .ptr = testarray2d,
263 .length = SIDE_ARRAY_SIZE(testarray2d),
264 };
265 side_event_call(my_provider_event_vla_visitor2d, side_arg_list(side_arg_vla_visitor(&ctx), side_arg_s64(42)));
266 }
267}
268
269static int64_t array_fixint[] = { -444, 555, 123, 2897432587 };
270
271side_static_event(my_provider_event_array_fixint, "myprovider", "myarrayfixint", SIDE_LOGLEVEL_DEBUG,
272 side_field_list(
273 side_field_array("arrfixint", side_elem(side_type_s64(side_attr_list())), SIDE_ARRAY_SIZE(array_fixint), side_attr_list()),
274 side_field_s64("v", side_attr_list()),
275 ),
276 side_attr_list()
277);
278
279static
280void test_array_fixint(void)
281{
282 side_event(my_provider_event_array_fixint,
283 side_arg_list(side_arg_array_s64(array_fixint), side_arg_s64(42)));
284}
285
286static int64_t vla_fixint[] = { -444, 555, 123, 2897432587 };
287
288side_static_event(my_provider_event_vla_fixint, "myprovider", "myvlafixint", SIDE_LOGLEVEL_DEBUG,
289 side_field_list(
290 side_field_vla("vlafixint", side_elem(side_type_s64(side_attr_list())), side_attr_list()),
291 side_field_s64("v", side_attr_list()),
292 ),
293 side_attr_list()
294);
295
296static
297void test_vla_fixint(void)
298{
299 side_event(my_provider_event_vla_fixint,
300 side_arg_list(side_arg_vla_s64(vla_fixint, SIDE_ARRAY_SIZE(vla_fixint)), side_arg_s64(42)));
301}
302
303side_static_event(my_provider_event_dynamic_basic,
304 "myprovider", "mydynamicbasic", SIDE_LOGLEVEL_DEBUG,
305 side_field_list(
306 side_field_dynamic("dynamic", side_attr_list()),
307 ),
308 side_attr_list()
309);
310
311static
312void test_dynamic_basic_type(void)
313{
314 side_event(my_provider_event_dynamic_basic,
315 side_arg_list(side_arg_dynamic(side_arg_dynamic_s16(-33, side_attr_list()))));
316}
317
318side_static_event(my_provider_event_dynamic_vla,
319 "myprovider", "mydynamicvla", SIDE_LOGLEVEL_DEBUG,
320 side_field_list(
321 side_field_dynamic("dynamic", side_attr_list()),
322 ),
323 side_attr_list()
324);
325
326static
327void test_dynamic_vla(void)
328{
329 side_arg_dynamic_define_vec(myvla,
330 side_arg_list(
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()),
334 ),
335 side_attr_list()
336 );
337 side_event(my_provider_event_dynamic_vla,
338 side_arg_list(side_arg_dynamic(side_arg_dynamic_vla(&myvla))));
339}
340
341side_static_event(my_provider_event_dynamic_null,
342 "myprovider", "mydynamicnull", SIDE_LOGLEVEL_DEBUG,
343 side_field_list(
344 side_field_dynamic("dynamic", side_attr_list()),
345 ),
346 side_attr_list()
347);
348
349static
350void test_dynamic_null(void)
351{
352 side_event(my_provider_event_dynamic_null,
353 side_arg_list(side_arg_dynamic(side_arg_dynamic_null(side_attr_list()))));
354}
355
356side_static_event(my_provider_event_dynamic_struct,
357 "myprovider", "mydynamicstruct", SIDE_LOGLEVEL_DEBUG,
358 side_field_list(
359 side_field_dynamic("dynamic", side_attr_list()),
360 ),
361 side_attr_list()
362);
363
364static
365void test_dynamic_struct(void)
366{
367 side_arg_dynamic_define_struct(mystruct,
368 side_arg_list(
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())),
372 ),
373 side_attr_list()
374 );
375
376 side_event(my_provider_event_dynamic_struct,
377 side_arg_list(side_arg_dynamic(side_arg_dynamic_struct(&mystruct))));
378}
379
380side_static_event(my_provider_event_dynamic_nested_struct,
381 "myprovider", "mydynamicnestedstruct", SIDE_LOGLEVEL_DEBUG,
382 side_field_list(
383 side_field_dynamic("dynamic", side_attr_list()),
384 ),
385 side_attr_list()
386);
387
388static
389void test_dynamic_nested_struct(void)
390{
391 side_arg_dynamic_define_struct(nested,
392 side_arg_list(
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())),
395 ),
396 side_attr_list()
397 );
398 side_arg_dynamic_define_struct(nested2,
399 side_arg_list(
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())),
402 ),
403 side_attr_list()
404 );
405 side_arg_dynamic_define_struct(mystruct,
406 side_arg_list(
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()
411 );
412 side_event(my_provider_event_dynamic_nested_struct,
413 side_arg_list(side_arg_dynamic(side_arg_dynamic_struct(&mystruct))));
414}
415
416side_static_event(my_provider_event_dynamic_vla_struct,
417 "myprovider", "mydynamicvlastruct", SIDE_LOGLEVEL_DEBUG,
418 side_field_list(
419 side_field_dynamic("dynamic", side_attr_list()),
420 ),
421 side_attr_list()
422);
423
424static
425void test_dynamic_vla_struct(void)
426{
427 side_arg_dynamic_define_struct(nested,
428 side_arg_list(
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())),
431 ),
432 side_attr_list()
433 );
434 side_arg_dynamic_define_vec(myvla,
435 side_arg_list(
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()
442 );
443 side_event(my_provider_event_dynamic_vla_struct,
444 side_arg_list(side_arg_dynamic(side_arg_dynamic_vla(&myvla))));
445}
446
447side_static_event(my_provider_event_dynamic_struct_vla,
448 "myprovider", "mydynamicstructvla", SIDE_LOGLEVEL_DEBUG,
449 side_field_list(
450 side_field_dynamic("dynamic", side_attr_list()),
451 ),
452 side_attr_list()
453);
454
455static
456void test_dynamic_struct_vla(void)
457{
458 side_arg_dynamic_define_vec(myvla,
459 side_arg_list(
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()),
463 ),
464 side_attr_list()
465 );
466 side_arg_dynamic_define_vec(myvla2,
467 side_arg_list(
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()),
471 ),
472 side_attr_list()
473 );
474 side_arg_dynamic_define_struct(mystruct,
475 side_arg_list(
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()
480 );
481 side_event(my_provider_event_dynamic_struct_vla,
482 side_arg_list(side_arg_dynamic(side_arg_dynamic_struct(&mystruct))));
483}
484
485side_static_event(my_provider_event_dynamic_nested_vla,
486 "myprovider", "mydynamicnestedvla", SIDE_LOGLEVEL_DEBUG,
487 side_field_list(
488 side_field_dynamic("dynamic", side_attr_list()),
489 ),
490 side_attr_list()
491);
492
493static
494void test_dynamic_nested_vla(void)
495{
496 side_arg_dynamic_define_vec(nestedvla,
497 side_arg_list(
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()),
501 ),
502 side_attr_list()
503 );
504 side_arg_dynamic_define_vec(nestedvla2,
505 side_arg_list(
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()),
509 ),
510 side_attr_list()
511 );
512 side_arg_dynamic_define_vec(myvla,
513 side_arg_list(
514 side_arg_dynamic_vla(&nestedvla),
515 side_arg_dynamic_vla(&nestedvla2),
516 ),
517 side_attr_list()
518 );
519 side_event(my_provider_event_dynamic_nested_vla,
520 side_arg_list(side_arg_dynamic(side_arg_dynamic_vla(&myvla))));
521}
522
523side_static_event_variadic(my_provider_event_variadic,
524 "myprovider", "myvariadicevent", SIDE_LOGLEVEL_DEBUG,
525 side_field_list(),
526 side_attr_list()
527);
528
529static
530void test_variadic(void)
531{
532 side_event_variadic(my_provider_event_variadic,
533 side_arg_list(),
534 side_arg_list(
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())),
537 ),
538 side_attr_list()
539 );
540}
541
542side_static_event_variadic(my_provider_event_static_variadic,
543 "myprovider", "mystaticvariadicevent", SIDE_LOGLEVEL_DEBUG,
544 side_field_list(
545 side_field_u32("abc", side_attr_list()),
546 side_field_u16("def", side_attr_list()),
547 ),
548 side_attr_list()
549);
550
551static
552void test_static_variadic(void)
553{
554 side_event_variadic(my_provider_event_static_variadic,
555 side_arg_list(
556 side_arg_u32(1),
557 side_arg_u16(2),
558 ),
559 side_arg_list(
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())),
562 ),
563 side_attr_list()
564 );
565}
566
567side_static_event(my_provider_event_bool, "myprovider", "myeventbool", SIDE_LOGLEVEL_DEBUG,
568 side_field_list(
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()),
576 ),
577 side_attr_list()
578);
579
580static
581void 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
591 side_event(my_provider_event_bool,
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
604side_static_event_variadic(my_provider_event_dynamic_bool,
605 "myprovider", "mydynamicbool", SIDE_LOGLEVEL_DEBUG,
606 side_field_list(),
607 side_attr_list()
608);
609
610static
611void test_dynamic_bool(void)
612{
613 side_event_variadic(my_provider_event_dynamic_bool,
614 side_arg_list(),
615 side_arg_list(
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())),
620 ),
621 side_attr_list()
622 );
623}
624
625side_static_event(my_provider_event_dynamic_vla_visitor,
626 "myprovider", "mydynamicvlavisitor", SIDE_LOGLEVEL_DEBUG,
627 side_field_list(
628 side_field_dynamic("dynamic", side_attr_list()),
629 ),
630 side_attr_list()
631);
632
633struct app_dynamic_vla_visitor_ctx {
634 const uint32_t *ptr;
635 uint32_t length;
636};
637
638static
639enum 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 = {
648 .side_basic = {
649 .attr = NULL,
650 .nr_attr = 0,
651 .u = {
652 .side_u32 = ctx->ptr[i],
653 },
654 },
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
663static uint32_t testarray_dynamic_vla[] = { 1, 2, 3, 4, 5, 6, 7, 8 };
664
665static
666void test_dynamic_vla_with_visitor(void)
667{
668 side_event_cond(my_provider_event_dynamic_vla_visitor) {
669 struct app_dynamic_vla_visitor_ctx ctx = {
670 .ptr = testarray_dynamic_vla,
671 .length = SIDE_ARRAY_SIZE(testarray_dynamic_vla),
672 };
673 side_event_call(my_provider_event_dynamic_vla_visitor,
674 side_arg_list(
675 side_arg_dynamic(
676 side_arg_dynamic_vla_visitor(test_dynamic_vla_visitor, &ctx, side_attr_list())
677 )
678 )
679 );
680 }
681}
682
683side_static_event(my_provider_event_dynamic_struct_visitor,
684 "myprovider", "mydynamicstructvisitor", SIDE_LOGLEVEL_DEBUG,
685 side_field_list(
686 side_field_dynamic("dynamic", side_attr_list()),
687 ),
688 side_attr_list()
689);
690
691struct struct_visitor_pair {
692 const char *name;
693 uint32_t value;
694};
695
696struct app_dynamic_struct_visitor_ctx {
697 const struct struct_visitor_pair *ptr;
698 uint32_t length;
699};
700
701static
702enum 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 = {
713 .side_basic = {
714 .nr_attr = 0,
715 .attr = NULL,
716 .u = {
717 .side_u32 = ctx->ptr[i].value,
718 },
719 },
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
729static struct struct_visitor_pair testarray_dynamic_struct[] = {
730 { "a", 1, },
731 { "b", 2, },
732 { "c", 3, },
733 { "d", 4, },
734};
735
736static
737void test_dynamic_struct_with_visitor(void)
738{
739 side_event_cond(my_provider_event_dynamic_struct_visitor) {
740 struct app_dynamic_struct_visitor_ctx ctx = {
741 .ptr = testarray_dynamic_struct,
742 .length = SIDE_ARRAY_SIZE(testarray_dynamic_struct),
743 };
744 side_event_call(my_provider_event_dynamic_struct_visitor,
745 side_arg_list(
746 side_arg_dynamic(
747 side_arg_dynamic_struct_visitor(test_dynamic_struct_visitor, &ctx, side_attr_list())
748 )
749 )
750 );
751 }
752}
753
754side_static_event(my_provider_event_user_attribute, "myprovider", "myevent_user_attribute", SIDE_LOGLEVEL_DEBUG,
755 side_field_list(
756 side_field_u32("abc", side_attr_list()),
757 side_field_s64("def", side_attr_list()),
758 ),
759 side_attr_list(
760 side_attr("user_attribute_a", side_attr_string("val1")),
761 side_attr("user_attribute_b", side_attr_string("val2")),
762 )
763);
764
765static
766void test_event_user_attribute(void)
767{
768 side_event(my_provider_event_user_attribute, side_arg_list(side_arg_u32(1), side_arg_s64(2)));
769}
770
771side_static_event(my_provider_field_user_attribute, "myprovider", "myevent_field_attribute", SIDE_LOGLEVEL_DEBUG,
772 side_field_list(
773 side_field_u32("abc",
774 side_attr_list(
775 side_attr("user_attribute_a", side_attr_string("val1")),
776 side_attr("user_attribute_b", side_attr_u32(2)),
777 )
778 ),
779 side_field_s64("def",
780 side_attr_list(
781 side_attr("user_attribute_c", side_attr_string("val3")),
782 side_attr("user_attribute_d", side_attr_s64(-5)),
783 )
784 ),
785 ),
786 side_attr_list()
787);
788
789static
790void test_field_user_attribute(void)
791{
792 side_event(my_provider_field_user_attribute, side_arg_list(side_arg_u32(1), side_arg_s64(2)));
793}
794
795side_static_event_variadic(my_provider_event_variadic_attr,
796 "myprovider", "myvariadiceventattr", SIDE_LOGLEVEL_DEBUG,
797 side_field_list(),
798 side_attr_list()
799);
800
801static
802void test_variadic_attr(void)
803{
804 side_event_variadic(my_provider_event_variadic_attr,
805 side_arg_list(),
806 side_arg_list(
807 side_arg_dynamic_field("a",
808 side_arg_dynamic_u32(55,
809 side_attr_list(
810 side_attr("user_attribute_c", side_attr_string("valX")),
811 side_attr("user_attribute_d", side_attr_u8(55)),
812 )
813 )
814 ),
815 side_arg_dynamic_field("b",
816 side_arg_dynamic_s8(-4,
817 side_attr_list(
818 side_attr("X", side_attr_u8(1)),
819 side_attr("Y", side_attr_s8(2)),
820 )
821 )
822 ),
823 ),
824 side_attr_list()
825 );
826}
827
828side_static_event_variadic(my_provider_event_variadic_vla_attr,
829 "myprovider", "myvariadiceventvlaattr", SIDE_LOGLEVEL_DEBUG,
830 side_field_list(),
831 side_attr_list()
832);
833
834static
835void 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(
841 side_attr("Z", side_attr_u8(0)),
842 side_attr("A", side_attr_u8(123)),
843 )
844 ),
845 side_arg_dynamic_u32(2, side_attr_list()),
846 side_arg_dynamic_u32(3, side_attr_list()),
847 ),
848 side_attr_list(
849 side_attr("X", side_attr_u8(1)),
850 side_attr("Y", side_attr_u8(2)),
851 )
852 );
853 side_event_variadic(my_provider_event_variadic_vla_attr,
854 side_arg_list(),
855 side_arg_list(
856 side_arg_dynamic_field("a", side_arg_dynamic_vla(&myvla)),
857 ),
858 side_attr_list()
859 );
860}
861
862side_static_event_variadic(my_provider_event_variadic_struct_attr,
863 "myprovider", "myvariadiceventstructattr", SIDE_LOGLEVEL_DEBUG,
864 side_field_list(),
865 side_attr_list()
866);
867
868static
869void test_variadic_struct_attr(void)
870{
871 side_event_cond(my_provider_event_variadic_struct_attr) {
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(
877 side_attr("A", side_attr_bool(true)),
878 )
879 )
880 ),
881 side_arg_dynamic_field("b", side_arg_dynamic_u8(55, side_attr_list())),
882 ),
883 side_attr_list(
884 side_attr("X", side_attr_u8(1)),
885 side_attr("Y", side_attr_u8(2)),
886 )
887 );
888 side_event_call_variadic(my_provider_event_variadic_struct_attr,
889 side_arg_list(),
890 side_arg_list(
891 side_arg_dynamic_field("a", side_arg_dynamic_struct(&mystruct)),
892 ),
893 side_attr_list()
894 );
895 }
896}
897
898side_static_event(my_provider_event_float, "myprovider", "myeventfloat", SIDE_LOGLEVEL_DEBUG,
899 side_field_list(
900#if __HAVE_FLOAT16
901 side_field_float_binary16("binary16", side_attr_list()),
902 side_field_float_binary16_le("binary16_le", side_attr_list()),
903 side_field_float_binary16_be("binary16_be", side_attr_list()),
904#endif
905#if __HAVE_FLOAT32
906 side_field_float_binary32("binary32", side_attr_list()),
907 side_field_float_binary32_le("binary32_le", side_attr_list()),
908 side_field_float_binary32_be("binary32_be", side_attr_list()),
909#endif
910#if __HAVE_FLOAT64
911 side_field_float_binary64("binary64", side_attr_list()),
912 side_field_float_binary64_le("binary64_le", side_attr_list()),
913 side_field_float_binary64_be("binary64_be", side_attr_list()),
914#endif
915#if __HAVE_FLOAT128
916 side_field_float_binary128("binary128", side_attr_list()),
917 side_field_float_binary128_le("binary128_le", side_attr_list()),
918 side_field_float_binary128_be("binary128_be", side_attr_list()),
919#endif
920 ),
921 side_attr_list()
922);
923
924static
925void test_float(void)
926{
927#if __HAVE_FLOAT16
928 union {
929 _Float16 f;
930 uint16_t u;
931 } float16 = {
932 .f = 1.1,
933 };
934#endif
935#if __HAVE_FLOAT32
936 union {
937 _Float32 f;
938 uint32_t u;
939 } float32 = {
940 .f = 2.2,
941 };
942#endif
943#if __HAVE_FLOAT64
944 union {
945 _Float64 f;
946 uint64_t u;
947 } float64 = {
948 .f = 3.3,
949 };
950#endif
951#if __HAVE_FLOAT128
952 union {
953 _Float128 f;
954 char arr[16];
955 } float128 = {
956 .f = 4.4,
957 };
958#endif
959
960#if __HAVE_FLOAT16
961 float16.u = side_bswap_16(float16.u);
962#endif
963#if __HAVE_FLOAT32
964 float32.u = side_bswap_32(float32.u);
965#endif
966#if __HAVE_FLOAT64
967 float64.u = side_bswap_64(float64.u);
968#endif
969#if __HAVE_FLOAT128
970 side_bswap_128p(float128.arr);
971#endif
972
973 side_event(my_provider_event_float,
974 side_arg_list(
975#if __HAVE_FLOAT16
976 side_arg_float_binary16(1.1),
977# if SIDE_FLOAT_WORD_ORDER == SIDE_LITTLE_ENDIAN
978 side_arg_float_binary16(1.1),
979 side_arg_float_binary16(float16.f),
980# else
981 side_arg_float_binary16(float16.f),
982 side_arg_float_binary16(1.1),
983# endif
984#endif
985#if __HAVE_FLOAT32
986 side_arg_float_binary32(2.2),
987# if SIDE_FLOAT_WORD_ORDER == SIDE_LITTLE_ENDIAN
988 side_arg_float_binary32(2.2),
989 side_arg_float_binary32(float32.f),
990# else
991 side_arg_float_binary32(float32.f),
992 side_arg_float_binary32(2.2),
993# endif
994#endif
995#if __HAVE_FLOAT64
996 side_arg_float_binary64(3.3),
997# if SIDE_FLOAT_WORD_ORDER == SIDE_LITTLE_ENDIAN
998 side_arg_float_binary64(3.3),
999 side_arg_float_binary64(float64.f),
1000# else
1001 side_arg_float_binary64(float64.f),
1002 side_arg_float_binary64(3.3),
1003# endif
1004#endif
1005#if __HAVE_FLOAT128
1006 side_arg_float_binary128(4.4),
1007# if SIDE_FLOAT_WORD_ORDER == SIDE_LITTLE_ENDIAN
1008 side_arg_float_binary128(4.4),
1009 side_arg_float_binary128(float128.f),
1010# else
1011 side_arg_float_binary128(float128.f),
1012 side_arg_float_binary128(4.4),
1013# endif
1014#endif
1015 )
1016 );
1017}
1018
1019side_static_event_variadic(my_provider_event_variadic_float,
1020 "myprovider", "myvariadicfloat", SIDE_LOGLEVEL_DEBUG,
1021 side_field_list(),
1022 side_attr_list()
1023);
1024
1025static
1026void test_variadic_float(void)
1027{
1028#if __HAVE_FLOAT16
1029 union {
1030 _Float16 f;
1031 uint16_t u;
1032 } float16 = {
1033 .f = 1.1,
1034 };
1035#endif
1036#if __HAVE_FLOAT32
1037 union {
1038 _Float32 f;
1039 uint32_t u;
1040 } float32 = {
1041 .f = 2.2,
1042 };
1043#endif
1044#if __HAVE_FLOAT64
1045 union {
1046 _Float64 f;
1047 uint64_t u;
1048 } float64 = {
1049 .f = 3.3,
1050 };
1051#endif
1052#if __HAVE_FLOAT128
1053 union {
1054 _Float128 f;
1055 char arr[16];
1056 } float128 = {
1057 .f = 4.4,
1058 };
1059#endif
1060
1061#if __HAVE_FLOAT16
1062 float16.u = side_bswap_16(float16.u);
1063#endif
1064#if __HAVE_FLOAT32
1065 float32.u = side_bswap_32(float32.u);
1066#endif
1067#if __HAVE_FLOAT64
1068 float64.u = side_bswap_64(float64.u);
1069#endif
1070#if __HAVE_FLOAT128
1071 side_bswap_128p(float128.arr);
1072#endif
1073
1074 side_event_variadic(my_provider_event_variadic_float,
1075 side_arg_list(),
1076 side_arg_list(
1077#if __HAVE_FLOAT16
1078 side_arg_dynamic_field("binary16", side_arg_dynamic_float_binary16(1.1, side_attr_list())),
1079# if SIDE_FLOAT_WORD_ORDER == SIDE_LITTLE_ENDIAN
1080 side_arg_dynamic_field("binary16_le", side_arg_dynamic_float_binary16_le(1.1, side_attr_list())),
1081 side_arg_dynamic_field("binary16_be", side_arg_dynamic_float_binary16_be(float16.f, side_attr_list())),
1082# else
1083 side_arg_dynamic_field("binary16_le", side_arg_dynamic_float_binary16_le(float16.f, side_attr_list())),
1084 side_arg_dynamic_field("binary16_be", side_arg_dynamic_float_binary16_be(1.1, side_attr_list())),
1085# endif
1086#endif
1087#if __HAVE_FLOAT32
1088 side_arg_dynamic_field("binary32", side_arg_dynamic_float_binary32(2.2, side_attr_list())),
1089# if SIDE_FLOAT_WORD_ORDER == SIDE_LITTLE_ENDIAN
1090 side_arg_dynamic_field("binary32_le", side_arg_dynamic_float_binary32_le(2.2, side_attr_list())),
1091 side_arg_dynamic_field("binary32_be", side_arg_dynamic_float_binary32_be(float32.f, side_attr_list())),
1092# else
1093 side_arg_dynamic_field("binary32_le", side_arg_dynamic_float_binary32_le(float32.f, side_attr_list())),
1094 side_arg_dynamic_field("binary32_be", side_arg_dynamic_float_binary32_be(2.2, side_attr_list())),
1095# endif
1096#endif
1097#if __HAVE_FLOAT64
1098 side_arg_dynamic_field("binary64", side_arg_dynamic_float_binary64(3.3, side_attr_list())),
1099# if SIDE_FLOAT_WORD_ORDER == SIDE_LITTLE_ENDIAN
1100 side_arg_dynamic_field("binary64_le", side_arg_dynamic_float_binary64_le(3.3, side_attr_list())),
1101 side_arg_dynamic_field("binary64_be", side_arg_dynamic_float_binary64_be(float64.f, side_attr_list())),
1102# else
1103 side_arg_dynamic_field("binary64_le", side_arg_dynamic_float_binary64_le(float64.f, side_attr_list())),
1104 side_arg_dynamic_field("binary64_be", side_arg_dynamic_float_binary64_be(3.3, side_attr_list())),
1105# endif
1106#endif
1107#if __HAVE_FLOAT128
1108 side_arg_dynamic_field("binary128", side_arg_dynamic_float_binary128(4.4, side_attr_list())),
1109# if SIDE_FLOAT_WORD_ORDER == SIDE_LITTLE_ENDIAN
1110 side_arg_dynamic_field("binary128_le", side_arg_dynamic_float_binary128_le(4.4, side_attr_list())),
1111 side_arg_dynamic_field("binary128_be", side_arg_dynamic_float_binary128_be(float128.f, side_attr_list())),
1112# else
1113 side_arg_dynamic_field("binary128_le", side_arg_dynamic_float_binary128_le(float128.f, side_attr_list())),
1114 side_arg_dynamic_field("binary128_be", side_arg_dynamic_float_binary128_be(4.4, side_attr_list())),
1115# endif
1116#endif
1117 ),
1118 side_attr_list()
1119 );
1120}
1121
1122static side_define_enum(myenum,
1123 side_enum_mapping_list(
1124 side_enum_mapping_range("one-ten", 1, 10),
1125 side_enum_mapping_range("100-200", 100, 200),
1126 side_enum_mapping_value("200", 200),
1127 side_enum_mapping_value("300", 300),
1128 ),
1129 side_attr_list()
1130);
1131
1132side_static_event(my_provider_event_enum, "myprovider", "myeventenum", SIDE_LOGLEVEL_DEBUG,
1133 side_field_list(
1134 side_field_enum("5", &myenum, side_elem(side_type_u32(side_attr_list()))),
1135 side_field_enum("400", &myenum, side_elem(side_type_u64(side_attr_list()))),
1136 side_field_enum("200", &myenum, side_elem(side_type_u8(side_attr_list()))),
1137 side_field_enum("-100", &myenum, side_elem(side_type_s8(side_attr_list()))),
1138 side_field_enum("6_be", &myenum, side_elem(side_type_u32_be(side_attr_list()))),
1139 side_field_enum("6_le", &myenum, side_elem(side_type_u32_le(side_attr_list()))),
1140 ),
1141 side_attr_list()
1142);
1143
1144static
1145void test_enum(void)
1146{
1147 side_event(my_provider_event_enum,
1148 side_arg_list(
1149 side_arg_u32(5),
1150 side_arg_u64(400),
1151 side_arg_u8(200),
1152 side_arg_s8(-100),
1153#if SIDE_BYTE_ORDER == SIDE_LITTLE_ENDIAN
1154 side_arg_u32(side_bswap_32(6)),
1155 side_arg_u32(6),
1156#else
1157 side_arg_u32(side_bswap_32(6)),
1158 side_arg_u32(6),
1159#endif
1160 )
1161 );
1162}
1163
1164/* A bitmap enum maps bits to labels. */
1165static side_define_enum_bitmap(myenum_bitmap,
1166 side_enum_bitmap_mapping_list(
1167 side_enum_bitmap_mapping_value("0", 0),
1168 side_enum_bitmap_mapping_range("1-2", 1, 2),
1169 side_enum_bitmap_mapping_range("2-4", 2, 4),
1170 side_enum_bitmap_mapping_value("3", 3),
1171 side_enum_bitmap_mapping_value("30", 30),
1172 side_enum_bitmap_mapping_value("63", 63),
1173 side_enum_bitmap_mapping_range("158-160", 158, 160),
1174 side_enum_bitmap_mapping_value("159", 159),
1175 side_enum_bitmap_mapping_range("500-700", 500, 700),
1176 ),
1177 side_attr_list()
1178);
1179
1180side_static_event(my_provider_event_enum_bitmap, "myprovider", "myeventenumbitmap", SIDE_LOGLEVEL_DEBUG,
1181 side_field_list(
1182 side_field_enum_bitmap("bit_0", &myenum_bitmap, side_elem(side_type_u32(side_attr_list()))),
1183 side_field_enum_bitmap("bit_1", &myenum_bitmap, side_elem(side_type_u32(side_attr_list()))),
1184 side_field_enum_bitmap("bit_2", &myenum_bitmap, side_elem(side_type_u8(side_attr_list()))),
1185 side_field_enum_bitmap("bit_3", &myenum_bitmap, side_elem(side_type_u8(side_attr_list()))),
1186 side_field_enum_bitmap("bit_30", &myenum_bitmap, side_elem(side_type_u32(side_attr_list()))),
1187 side_field_enum_bitmap("bit_31", &myenum_bitmap, side_elem(side_type_u32(side_attr_list()))),
1188 side_field_enum_bitmap("bit_63", &myenum_bitmap, side_elem(side_type_u64(side_attr_list()))),
1189 side_field_enum_bitmap("bits_1+63", &myenum_bitmap, side_elem(side_type_u64(side_attr_list()))),
1190 side_field_enum_bitmap("byte_bit_2", &myenum_bitmap, side_elem(side_type_byte(side_attr_list()))),
1191 side_field_enum_bitmap("bit_159", &myenum_bitmap,
1192 side_elem(side_type_array(side_elem(side_type_u32(side_attr_list())), 5, side_attr_list()))),
1193 side_field_enum_bitmap("bit_159", &myenum_bitmap,
1194 side_elem(side_type_vla(side_elem(side_type_u32(side_attr_list())), side_attr_list()))),
1195 side_field_enum_bitmap("bit_2_be", &myenum_bitmap, side_elem(side_type_u32_be(side_attr_list()))),
1196 side_field_enum_bitmap("bit_2_le", &myenum_bitmap, side_elem(side_type_u32_le(side_attr_list()))),
1197 ),
1198 side_attr_list()
1199);
1200
1201static
1202void test_enum_bitmap(void)
1203{
1204 side_event_cond(my_provider_event_enum_bitmap) {
1205 side_arg_define_vec(myarray,
1206 side_arg_list(
1207 side_arg_u32(0),
1208 side_arg_u32(0),
1209 side_arg_u32(0),
1210 side_arg_u32(0),
1211 side_arg_u32(0x80000000), /* bit 159 */
1212 )
1213 );
1214 side_event_call(my_provider_event_enum_bitmap,
1215 side_arg_list(
1216 side_arg_u32(1 << 0),
1217 side_arg_u32(1 << 1),
1218 side_arg_u8(1 << 2),
1219 side_arg_u8(1 << 3),
1220 side_arg_u32(1 << 30),
1221 side_arg_u32(1 << 31),
1222 side_arg_u64(1ULL << 63),
1223 side_arg_u64((1ULL << 1) | (1ULL << 63)),
1224 side_arg_byte(1 << 2),
1225 side_arg_array(&myarray),
1226 side_arg_vla(&myarray),
1227#if SIDE_BYTE_ORDER == SIDE_LITTLE_ENDIAN
1228 side_arg_u32(side_bswap_32(1 << 2)),
1229 side_arg_u32(1 << 2),
1230#else
1231 side_arg_u32(0x06000000),
1232 side_arg_u32(side_bswap_32(1 << 2)),
1233#endif
1234 )
1235 );
1236 }
1237}
1238
1239static uint8_t blob_fixint[] = { 0x55, 0x44, 0x33, 0x22, 0x11 };
1240
1241side_static_event_variadic(my_provider_event_blob, "myprovider", "myeventblob", SIDE_LOGLEVEL_DEBUG,
1242 side_field_list(
1243 side_field_byte("blobfield", side_attr_list()),
1244 side_field_array("arrayblob", side_elem(side_type_byte(side_attr_list())), 3, side_attr_list()),
1245 side_field_array("arrayblobfix", side_elem(side_type_byte(side_attr_list())), SIDE_ARRAY_SIZE(blob_fixint), side_attr_list()),
1246 side_field_vla("vlablobfix", side_elem(side_type_byte(side_attr_list())), side_attr_list()),
1247 ),
1248 side_attr_list()
1249);
1250
1251static
1252void test_blob(void)
1253{
1254 side_event_cond(my_provider_event_blob) {
1255 side_arg_define_vec(myarray, side_arg_list(side_arg_byte(1), side_arg_byte(2), side_arg_byte(3)));
1256 side_arg_dynamic_define_vec(myvla,
1257 side_arg_list(
1258 side_arg_dynamic_byte(0x22, side_attr_list()),
1259 side_arg_dynamic_byte(0x33, side_attr_list()),
1260 ),
1261 side_attr_list()
1262 );
1263 side_event_call_variadic(my_provider_event_blob,
1264 side_arg_list(
1265 side_arg_byte(0x55),
1266 side_arg_array(&myarray),
1267 side_arg_array_byte(blob_fixint),
1268 side_arg_vla_byte(blob_fixint, SIDE_ARRAY_SIZE(blob_fixint)),
1269 ),
1270 side_arg_list(
1271 side_arg_dynamic_field("varblobfield",
1272 side_arg_dynamic_byte(0x55, side_attr_list())
1273 ),
1274 side_arg_dynamic_field("varblobvla", side_arg_dynamic_vla(&myvla)),
1275 ),
1276 side_attr_list()
1277 );
1278 }
1279}
1280
1281side_static_event_variadic(my_provider_event_format_string,
1282 "myprovider", "myeventformatstring", SIDE_LOGLEVEL_DEBUG,
1283 side_field_list(
1284 side_field_string("fmt", side_attr_list()),
1285 ),
1286 side_attr_list(
1287 side_attr("lang.c.format_string", side_attr_bool(true)),
1288 )
1289);
1290
1291static
1292void test_fmt_string(void)
1293{
1294 side_event_cond(my_provider_event_format_string) {
1295 side_arg_dynamic_define_vec(args,
1296 side_arg_list(
1297 side_arg_dynamic_string("blah", side_attr_list()),
1298 side_arg_dynamic_s32(123, side_attr_list()),
1299 ),
1300 side_attr_list()
1301 );
1302 side_event_call_variadic(my_provider_event_format_string,
1303 side_arg_list(
1304 side_arg_string("This is a formatted string with str: %s int: %d"),
1305 ),
1306 side_arg_list(
1307 side_arg_dynamic_field("arguments", side_arg_dynamic_vla(&args)),
1308 ),
1309 side_attr_list()
1310 );
1311 }
1312}
1313
1314side_static_event_variadic(my_provider_event_endian, "myprovider", "myevent_endian", SIDE_LOGLEVEL_DEBUG,
1315 side_field_list(
1316 side_field_u16_le("u16_le", side_attr_list()),
1317 side_field_u32_le("u32_le", side_attr_list()),
1318 side_field_u64_le("u64_le", side_attr_list()),
1319 side_field_s16_le("s16_le", side_attr_list()),
1320 side_field_s32_le("s32_le", side_attr_list()),
1321 side_field_s64_le("s64_le", side_attr_list()),
1322 side_field_u16_be("u16_be", side_attr_list()),
1323 side_field_u32_be("u32_be", side_attr_list()),
1324 side_field_u64_be("u64_be", side_attr_list()),
1325 side_field_s16_be("s16_be", side_attr_list()),
1326 side_field_s32_be("s32_be", side_attr_list()),
1327 side_field_s64_be("s64_be", side_attr_list()),
1328 ),
1329 side_attr_list()
1330);
1331
1332static
1333void test_endian(void)
1334{
1335 side_event_variadic(my_provider_event_endian,
1336 side_arg_list(
1337#if SIDE_BYTE_ORDER == SIDE_LITTLE_ENDIAN
1338 side_arg_u16(1),
1339 side_arg_u32(1),
1340 side_arg_u64(1),
1341 side_arg_s16(1),
1342 side_arg_s32(1),
1343 side_arg_s64(1),
1344 side_arg_u16(side_bswap_16(1)),
1345 side_arg_u32(side_bswap_32(1)),
1346 side_arg_u64(side_bswap_64(1)),
1347 side_arg_s16(side_bswap_16(1)),
1348 side_arg_s32(side_bswap_32(1)),
1349 side_arg_s64(side_bswap_64(1)),
1350#else
1351 side_arg_u16(side_bswap_16(1)),
1352 side_arg_u32(side_bswap_32(1)),
1353 side_arg_u64(side_bswap_64(1)),
1354 side_arg_s16(side_bswap_16(1)),
1355 side_arg_s32(side_bswap_32(1)),
1356 side_arg_s64(side_bswap_64(1)),
1357 side_arg_u16(1),
1358 side_arg_u32(1),
1359 side_arg_u64(1),
1360 side_arg_s16(1),
1361 side_arg_s32(1),
1362 side_arg_s64(1),
1363#endif
1364 ),
1365 side_arg_list(
1366#if SIDE_BYTE_ORDER == SIDE_LITTLE_ENDIAN
1367 side_arg_dynamic_field("u16_le", side_arg_dynamic_u16_le(1, side_attr_list())),
1368 side_arg_dynamic_field("u32_le", side_arg_dynamic_u32_le(1, side_attr_list())),
1369 side_arg_dynamic_field("u64_le", side_arg_dynamic_u64_le(1, side_attr_list())),
1370 side_arg_dynamic_field("s16_le", side_arg_dynamic_s16_le(1, side_attr_list())),
1371 side_arg_dynamic_field("s32_le", side_arg_dynamic_s32_le(1, side_attr_list())),
1372 side_arg_dynamic_field("s64_le", side_arg_dynamic_s64_le(1, side_attr_list())),
1373 side_arg_dynamic_field("u16_be", side_arg_dynamic_u16_be(side_bswap_16(1), side_attr_list())),
1374 side_arg_dynamic_field("u32_be", side_arg_dynamic_u32_be(side_bswap_32(1), side_attr_list())),
1375 side_arg_dynamic_field("u64_be", side_arg_dynamic_u64_be(side_bswap_64(1), side_attr_list())),
1376 side_arg_dynamic_field("s16_be", side_arg_dynamic_s16_be(side_bswap_16(1), side_attr_list())),
1377 side_arg_dynamic_field("s32_be", side_arg_dynamic_s32_be(side_bswap_32(1), side_attr_list())),
1378 side_arg_dynamic_field("s64_be", side_arg_dynamic_s64_be(side_bswap_64(1), side_attr_list())),
1379#else
1380 side_arg_dynamic_field("u16_le", side_arg_dynamic_u16_le(side_bswap_16(1), side_attr_list())),
1381 side_arg_dynamic_field("u32_le", side_arg_dynamic_u32_le(side_bswap_32(1), side_attr_list())),
1382 side_arg_dynamic_field("u64_le", side_arg_dynamic_u64_le(side_bswap_64(1), side_attr_list())),
1383 side_arg_dynamic_field("s16_le", side_arg_dynamic_s16_le(side_bswap_16(1), side_attr_list())),
1384 side_arg_dynamic_field("s32_le", side_arg_dynamic_s32_le(side_bswap_32(1), side_attr_list())),
1385 side_arg_dynamic_field("s64_le", side_arg_dynamic_s64_le(side_bswap_64(1), side_attr_list())),
1386 side_arg_dynamic_field("u16_be", side_arg_dynamic_u16_be(1, side_attr_list())),
1387 side_arg_dynamic_field("u32_be", side_arg_dynamic_u32_be(1, side_attr_list())),
1388 side_arg_dynamic_field("u64_be", side_arg_dynamic_u64_be(1, side_attr_list())),
1389 side_arg_dynamic_field("s16_be", side_arg_dynamic_s16_be(1, side_attr_list())),
1390 side_arg_dynamic_field("s32_be", side_arg_dynamic_s32_be(1, side_attr_list())),
1391 side_arg_dynamic_field("s64_be", side_arg_dynamic_s64_be(1, side_attr_list())),
1392#endif
1393 ),
1394 side_attr_list()
1395 );
1396}
1397
1398int main()
1399{
1400 test_fields();
1401 test_event_hidden();
1402 test_event_export();
1403 test_struct_literal();
1404 test_struct();
1405 test_array();
1406 test_vla();
1407 test_vla_visitor();
1408 test_vla_visitor_2d();
1409 test_array_fixint();
1410 test_vla_fixint();
1411 test_dynamic_basic_type();
1412 test_dynamic_vla();
1413 test_dynamic_null();
1414 test_dynamic_struct();
1415 test_dynamic_nested_struct();
1416 test_dynamic_vla_struct();
1417 test_dynamic_struct_vla();
1418 test_dynamic_nested_vla();
1419 test_variadic();
1420 test_static_variadic();
1421 test_bool();
1422 test_dynamic_bool();
1423 test_dynamic_vla_with_visitor();
1424 test_dynamic_struct_with_visitor();
1425 test_event_user_attribute();
1426 test_field_user_attribute();
1427 test_variadic_attr();
1428 test_variadic_vla_attr();
1429 test_variadic_struct_attr();
1430 test_float();
1431 test_variadic_float();
1432 test_enum();
1433 test_enum_bitmap();
1434 test_blob();
1435 test_fmt_string();
1436 test_endian();
1437 return 0;
1438}
This page took 0.030182 seconds and 4 git commands to generate.