} SIDE_PACKED;
struct side_arg_dynamic_vla {
- const struct side_arg *sav;
+ side_ptr_t(const struct side_arg) sav;
side_ptr_t(const struct side_attr) attr;
uint32_t len;
uint32_t nr_attr;
} SIDE_PACKED;
struct side_arg_dynamic_struct {
- const struct side_arg_dynamic_field *fields;
+ side_ptr_t(const struct side_arg_dynamic_field) fields;
side_ptr_t(const struct side_attr) attr;
uint32_t len;
uint32_t nr_attr;
} SIDE_PACKED side_float;
/* Dynamic compound types */
- const struct side_arg_dynamic_struct *side_dynamic_struct;
- const struct side_arg_dynamic_vla *side_dynamic_vla;
+ side_ptr_t(const struct side_arg_dynamic_struct) side_dynamic_struct;
+ side_ptr_t(const struct side_arg_dynamic_vla) side_dynamic_vla;
struct side_dynamic_struct_visitor side_dynamic_struct_visitor;
struct side_dynamic_vla_visitor side_dynamic_vla_visitor;
} SIDE_PACKED;
struct side_arg_vec {
- const struct side_arg *sav;
+ side_ptr_t(const struct side_arg) sav;
uint32_t len;
} SIDE_PACKED;
struct side_arg_dynamic_field {
- const char *field_name;
+ side_ptr_t(const char) field_name;
const struct side_arg elem;
} SIDE_PACKED;
.type = SIDE_TYPE_DYNAMIC_VLA, \
.u = { \
.side_dynamic = { \
- .side_dynamic_vla = (_vla), \
+ .side_dynamic_vla = SIDE_PTR_INIT(_vla), \
}, \
}, \
}
.type = SIDE_TYPE_DYNAMIC_STRUCT, \
.u = { \
.side_dynamic = { \
- .side_dynamic_struct = (_struct), \
+ .side_dynamic_struct = SIDE_PTR_INIT(_struct), \
}, \
}, \
}
#define side_arg_dynamic_define_vec(_identifier, _sav, _attr...) \
const struct side_arg _identifier##_vec[] = { _sav }; \
const struct side_arg_dynamic_vla _identifier = { \
- .sav = _identifier##_vec, \
+ .sav = SIDE_PTR_INIT(_identifier##_vec), \
.attr = SIDE_PTR_INIT(SIDE_PARAM_SELECT_ARG1(_, ##_attr, side_attr_list())), \
.len = SIDE_ARRAY_SIZE(_identifier##_vec), \
.nr_attr = SIDE_ARRAY_SIZE(SIDE_PARAM_SELECT_ARG1(_, ##_attr, side_attr_list())), \
#define side_arg_dynamic_define_struct(_identifier, _struct_fields, _attr...) \
const struct side_arg_dynamic_field _identifier##_fields[] = { _struct_fields }; \
const struct side_arg_dynamic_struct _identifier = { \
- .fields = _identifier##_fields, \
+ .fields = SIDE_PTR_INIT(_identifier##_fields), \
.attr = SIDE_PTR_INIT(SIDE_PARAM_SELECT_ARG1(_, ##_attr, side_attr_list())), \
.len = SIDE_ARRAY_SIZE(_identifier##_fields), \
.nr_attr = SIDE_ARRAY_SIZE(SIDE_PARAM_SELECT_ARG1(_, ##_attr, side_attr_list())), \
#define side_arg_define_vec(_identifier, _sav) \
const struct side_arg _identifier##_vec[] = { _sav }; \
const struct side_arg_vec _identifier = { \
- .sav = _identifier##_vec, \
+ .sav = SIDE_PTR_INIT(_identifier##_vec), \
.len = SIDE_ARRAY_SIZE(_identifier##_vec), \
}
#define side_arg_dynamic_field(_name, _elem) \
{ \
- .field_name = _name, \
+ .field_name = SIDE_PTR_INIT(_name), \
.elem = _elem, \
}
{ \
const struct side_arg side_sav[] = { _sav }; \
const struct side_arg_vec side_arg_vec = { \
- .sav = side_sav, \
+ .sav = SIDE_PTR_INIT(side_sav), \
.len = SIDE_ARRAY_SIZE(side_sav), \
}; \
side_call(&(_identifier), &side_arg_vec); \
{ \
const struct side_arg side_sav[] = { _sav }; \
const struct side_arg_vec side_arg_vec = { \
- .sav = side_sav, \
+ .sav = SIDE_PTR_INIT(side_sav), \
.len = SIDE_ARRAY_SIZE(side_sav), \
}; \
const struct side_arg_dynamic_field side_fields[] = { _var_fields }; \
const struct side_arg_dynamic_struct var_struct = { \
- .fields = side_fields, \
+ .fields = SIDE_PTR_INIT(side_fields), \
.attr = SIDE_PTR_INIT(SIDE_PARAM_SELECT_ARG1(_, ##_attr, side_attr_list())), \
.len = SIDE_ARRAY_SIZE(side_fields), \
.nr_attr = SIDE_ARRAY_SIZE(SIDE_PARAM_SELECT_ARG1(_, ##_attr, side_attr_list())), \
break;
case SIDE_TYPE_ARRAY:
elem_type = side_ptr_get(enum_elem_type->u.side_array.elem_type);
- array_item = side_ptr_get(item->u.side_static.side_array)->sav;
+ array_item = side_ptr_get(side_ptr_get(item->u.side_static.side_array)->sav);
nr_items = type_desc->u.side_array.length;
break;
case SIDE_TYPE_VLA:
elem_type = side_ptr_get(enum_elem_type->u.side_vla.elem_type);
- array_item = side_ptr_get(item->u.side_static.side_vla)->sav;
+ array_item = side_ptr_get(side_ptr_get(item->u.side_static.side_vla)->sav);
nr_items = side_ptr_get(item->u.side_static.side_vla)->len;
break;
default:
static
void tracer_print_struct(const struct side_type *type_desc, const struct side_arg_vec *side_arg_vec)
{
- const struct side_arg *sav = side_arg_vec->sav;
+ const struct side_arg *sav = side_ptr_get(side_arg_vec->sav);
const struct side_type_struct *side_struct = side_ptr_get(type_desc->u.side_struct);
uint32_t i, side_sav_len = side_arg_vec->len;
static
void tracer_print_array(const struct side_type *type_desc, const struct side_arg_vec *side_arg_vec)
{
- const struct side_arg *sav = side_arg_vec->sav;
+ const struct side_arg *sav = side_ptr_get(side_arg_vec->sav);
uint32_t i, side_sav_len = side_arg_vec->len;
if (type_desc->u.side_array.length != side_sav_len) {
static
void tracer_print_vla(const struct side_type *type_desc, const struct side_arg_vec *side_arg_vec)
{
- const struct side_arg *sav = side_arg_vec->sav;
+ const struct side_arg *sav = side_ptr_get(side_arg_vec->sav);
uint32_t i, side_sav_len = side_arg_vec->len;
print_attributes("attr", ":", side_ptr_get(type_desc->u.side_vla.attr), type_desc->u.side_vla.nr_attr);
static
void tracer_print_dynamic_struct(const struct side_arg_dynamic_struct *dynamic_struct)
{
- const struct side_arg_dynamic_field *fields = dynamic_struct->fields;
+ const struct side_arg_dynamic_field *fields = side_ptr_get(dynamic_struct->fields);
uint32_t i, len = dynamic_struct->len;
print_attributes("attr", "::", side_ptr_get(dynamic_struct->attr), dynamic_struct->nr_attr);
printf("[ ");
for (i = 0; i < len; i++) {
printf("%s", i ? ", " : "");
- printf("%s:: ", fields[i].field_name);
+ printf("%s:: ", side_ptr_get(fields[i].field_name));
tracer_print_dynamic(&fields[i].elem);
}
printf(" ]");
(struct tracer_dynamic_struct_visitor_priv *) tracer_ctx->priv;
printf("%s", tracer_priv->i++ ? ", " : "");
- printf("%s:: ", dynamic_field->field_name);
+ printf("%s:: ", side_ptr_get(dynamic_field->field_name));
tracer_print_dynamic(&dynamic_field->elem);
return SIDE_VISITOR_STATUS_OK;
}
static
void tracer_print_dynamic_vla(const struct side_arg_dynamic_vla *vla)
{
- const struct side_arg *sav = vla->sav;
+ const struct side_arg *sav = side_ptr_get(vla->sav);
uint32_t i, side_sav_len = vla->len;
print_attributes("attr", "::", side_ptr_get(vla->attr), vla->nr_attr);
/* Dynamic compound types */
case SIDE_TYPE_DYNAMIC_STRUCT:
- tracer_print_dynamic_struct(item->u.side_dynamic.side_dynamic_struct);
+ tracer_print_dynamic_struct(side_ptr_get(item->u.side_dynamic.side_dynamic_struct));
break;
case SIDE_TYPE_DYNAMIC_STRUCT_VISITOR:
tracer_print_dynamic_struct_visitor(item);
break;
case SIDE_TYPE_DYNAMIC_VLA:
- tracer_print_dynamic_vla(item->u.side_dynamic.side_dynamic_vla);
+ tracer_print_dynamic_vla(side_ptr_get(item->u.side_dynamic.side_dynamic_vla));
break;
case SIDE_TYPE_DYNAMIC_VLA_VISITOR:
tracer_print_dynamic_vla_visitor(item);
const struct side_arg_vec *side_arg_vec,
uint32_t *nr_items)
{
- const struct side_arg *sav = side_arg_vec->sav;
+ const struct side_arg *sav = side_ptr_get(side_arg_vec->sav);
uint32_t i, side_sav_len = side_arg_vec->len;
printf("provider: %s, event: %s", desc->provider_name, desc->event_name);
printf("%s", var_struct_len ? ", fields:: [ " : "");
for (i = 0; i < var_struct_len; i++, nr_fields++) {
printf("%s", i ? ", " : "");
- printf("%s:: ", var_struct->fields[i].field_name);
- tracer_print_dynamic(&var_struct->fields[i].elem);
+ printf("%s:: ", side_ptr_get(side_ptr_get(var_struct->fields)[i].field_name));
+ tracer_print_dynamic(&side_ptr_get(var_struct->fields)[i].elem);
}
if (i)
printf(" ]");
uint32_t length = ctx->length, i;
for (i = 0; i < length; i++) {
- struct side_arg_dynamic_field dynamic_field = {
- .field_name = ctx->ptr[i].name,
- .elem = side_arg_dynamic_u32(ctx->ptr[i].value),
- };
+ struct side_arg_dynamic_field dynamic_field =
+ side_arg_dynamic_field(ctx->ptr[i].name,
+ side_arg_dynamic_u32(ctx->ptr[i].value));
if (tracer_ctx->write_field(tracer_ctx, &dynamic_field) != SIDE_VISITOR_STATUS_OK)
return SIDE_VISITOR_STATUS_ERROR;
}