Implement RCU wait/wakeup scheme based on futex
[libside.git] / src / test.c
CommitLineData
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 17side_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
26static
27void 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
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{
89747802
MD
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{
89747802
MD
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,
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
80static
81void 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
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
89747802 97side_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
105static
106void 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 114side_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
122static
123void 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 131side_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
139static
140void 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
150struct app_visitor_ctx {
151 const uint32_t *ptr;
352a4b77 152 uint32_t length;
f611d0c3
MD
153};
154
352a4b77
MD
155static
156enum 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
170static uint32_t testarray[] = { 1, 2, 3, 4, 5, 6, 7, 8 };
171
89747802 172side_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
180static
181void 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
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++) {
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
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);
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
237static uint32_t testarray2d[][2] = {
238 { 1, 2 },
239 { 33, 44 },
240 { 55, 66 },
241};
242
89747802 243side_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
257static
258void 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
269static int64_t array_fixint[] = { -444, 555, 123, 2897432587 };
270
89747802 271side_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
279static
280void 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
286static int64_t vla_fixint[] = { -444, 555, 123, 2897432587 };
287
89747802 288side_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
296static
297void 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 303side_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
311static
312void 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 318side_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
326static
327void 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 341side_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
349static
350void 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 356side_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
364static
c208889e 365void 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 380side_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
388static
c208889e 389void 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 416side_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
424static
c208889e 425void 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 447side_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
455static
c208889e 456void 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 485side_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
493static
494void 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 523side_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
529static
530void 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 542side_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
551static
552void 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 567side_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
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
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 604side_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
610static
611void 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 625side_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
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 = {
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
663static uint32_t testarray_dynamic_vla[] = { 1, 2, 3, 4, 5, 6, 7, 8 };
664
665static
666void 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 683side_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
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 = {
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
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{
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 754side_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
765static
766void 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 771side_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
789static
790void 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 795side_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
801static
802void 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 828side_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
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(
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 862side_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
868static
869void 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 898side_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
916static
917void 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 937side_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
943static
944void 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 974static 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 984side_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
994static
995void 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
1008static 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 1023side_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
1042static
1043void 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
1073static uint8_t blob_fixint[] = { 0x55, 0x44, 0x33, 0x22, 0x11 };
1074
89747802 1075side_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
1085static
1086void 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 1115side_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
1125static
1126void 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
1148int 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}
This page took 0.084401 seconds and 4 git commands to generate.