} SIDE_PACKED;
struct side_type_byte {
- const struct side_attr *attr;
+ side_ptr_t(const struct side_attr) attr;
uint32_t nr_attr;
} SIDE_PACKED;
struct side_type_string {
- const struct side_attr *attr;
+ side_ptr_t(const struct side_attr) attr;
uint32_t nr_attr;
uint8_t unit_size; /* 1, 2, or 4 bytes */
uint8_t byte_order; /* enum side_type_label_byte_order */
} SIDE_PACKED;
struct side_type_integer {
- const struct side_attr *attr;
+ side_ptr_t(const struct side_attr) attr;
uint32_t nr_attr;
uint16_t integer_size; /* bytes */
uint16_t len_bits; /* bits. 0 for (integer_size * CHAR_BITS) */
} SIDE_PACKED;
struct side_type_float {
- const struct side_attr *attr;
+ side_ptr_t(const struct side_attr) attr;
uint32_t nr_attr;
uint16_t float_size; /* bytes */
uint8_t byte_order; /* enum side_type_label_byte_order */
struct side_enum_mappings {
const struct side_enum_mapping *mappings;
- const struct side_attr *attr;
+ side_ptr_t(const struct side_attr) attr;
uint32_t nr_mappings;
uint32_t nr_attr;
} SIDE_PACKED;
struct side_enum_bitmap_mappings {
const struct side_enum_bitmap_mapping *mappings;
- const struct side_attr *attr;
+ side_ptr_t(const struct side_attr) attr;
uint32_t nr_mappings;
uint32_t nr_attr;
} SIDE_PACKED;
struct side_type_struct {
const struct side_event_field *fields;
- const struct side_attr *attr;
+ side_ptr_t(const struct side_attr) attr;
uint32_t nr_fields;
uint32_t nr_attr;
} SIDE_PACKED;
struct side_type_array {
const struct side_type *elem_type;
- const struct side_attr *attr;
+ side_ptr_t(const struct side_attr) attr;
uint32_t length;
uint32_t nr_attr;
} SIDE_PACKED;
struct side_type_vla {
const struct side_type *elem_type;
- const struct side_attr *attr;
+ side_ptr_t(const struct side_attr) attr;
uint32_t nr_attr;
} SIDE_PACKED;
struct side_type_vla_visitor {
const struct side_type *elem_type;
side_visitor_func visitor;
- const struct side_attr *attr;
+ side_ptr_t(const struct side_attr) attr;
uint32_t nr_attr;
} SIDE_PACKED;
struct side_type_variant {
const struct side_type selector;
const struct side_variant_option *options;
- const struct side_attr *attr;
+ side_ptr_t(const struct side_attr) attr;
uint32_t nr_options;
uint32_t nr_attr;
} SIDE_PACKED;
struct side_arg_dynamic_vla {
const struct side_arg *sav;
- const struct side_attr *attr;
+ 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;
- const struct side_attr *attr;
+ side_ptr_t(const struct side_attr) attr;
uint32_t len;
uint32_t nr_attr;
} SIDE_PACKED;
struct side_dynamic_struct_visitor {
void *app_ctx;
side_dynamic_struct_visitor_func visitor;
- const struct side_attr *attr;
+ side_ptr_t(const struct side_attr) attr;
uint32_t nr_attr;
} SIDE_PACKED;
struct side_dynamic_vla_visitor {
void *app_ctx;
side_visitor_func visitor;
- const struct side_attr *attr;
+ side_ptr_t(const struct side_attr) attr;
uint32_t nr_attr;
} SIDE_PACKED;
const char *provider_name;
const char *event_name;
const struct side_event_field *fields;
- const struct side_attr *attr;
+ side_ptr_t(const struct side_attr) attr;
uint64_t flags;
uint32_t version;
uint32_t loglevel; /* enum side_loglevel */
#define side_define_enum(_identifier, _mappings, _attr...) \
const struct side_enum_mappings _identifier = { \
.mappings = _mappings, \
- .attr = SIDE_PARAM_SELECT_ARG1(_, ##_attr, side_attr_list()), \
+ .attr = SIDE_PTR_INIT(SIDE_PARAM_SELECT_ARG1(_, ##_attr, side_attr_list())), \
.nr_mappings = SIDE_ARRAY_SIZE(SIDE_PARAM(_mappings)), \
.nr_attr = SIDE_ARRAY_SIZE(SIDE_PARAM_SELECT_ARG1(_, ##_attr, side_attr_list())), \
}
#define side_define_enum_bitmap(_identifier, _mappings, _attr...) \
const struct side_enum_bitmap_mappings _identifier = { \
.mappings = _mappings, \
- .attr = SIDE_PARAM_SELECT_ARG1(_, ##_attr, side_attr_list()), \
+ .attr = SIDE_PTR_INIT(SIDE_PARAM_SELECT_ARG1(_, ##_attr, side_attr_list())), \
.nr_mappings = SIDE_ARRAY_SIZE(SIDE_PARAM(_mappings)), \
.nr_attr = SIDE_ARRAY_SIZE(SIDE_PARAM_SELECT_ARG1(_, ##_attr, side_attr_list())), \
}
.type = SIDE_TYPE_BYTE, \
.u = { \
.side_byte = { \
- .attr = SIDE_PARAM_SELECT_ARG1(_, ##_attr, side_attr_list()), \
+ .attr = SIDE_PTR_INIT(SIDE_PARAM_SELECT_ARG1(_, ##_attr, side_attr_list())), \
.nr_attr = SIDE_ARRAY_SIZE(SIDE_PARAM_SELECT_ARG1(_, ##_attr, side_attr_list())), \
}, \
}, \
.type = _type, \
.u = { \
.side_string = { \
- .attr = _attr, \
+ .attr = SIDE_PTR_INIT(_attr), \
.nr_attr = SIDE_ARRAY_SIZE(SIDE_PARAM(_attr)), \
.unit_size = _unit_size, \
.byte_order = _byte_order, \
.type = _type, \
.u = { \
.side_integer = { \
- .attr = _attr, \
+ .attr = SIDE_PTR_INIT(_attr), \
.nr_attr = SIDE_ARRAY_SIZE(SIDE_PARAM(_attr)), \
.integer_size = _integer_size, \
.len_bits = _len_bits, \
.type = _type, \
.u = { \
.side_float = { \
- .attr = _attr, \
+ .attr = SIDE_PTR_INIT(_attr), \
.nr_attr = SIDE_ARRAY_SIZE(SIDE_PARAM(_attr)), \
.float_size = _float_size, \
.byte_order = _byte_order, \
#define _side_type_struct_define(_fields, _attr) \
{ \
.fields = _fields, \
- .attr = _attr, \
+ .attr = SIDE_PTR_INIT(_attr), \
.nr_fields = SIDE_ARRAY_SIZE(SIDE_PARAM(_fields)), \
.nr_attr = SIDE_ARRAY_SIZE(SIDE_PARAM(_attr)), \
}
{ \
.selector = _selector, \
.options = _options, \
- .attr = _attr, \
+ .attr = SIDE_PTR_INIT(_attr), \
.nr_options = SIDE_ARRAY_SIZE(SIDE_PARAM(_options)), \
.nr_attr = SIDE_ARRAY_SIZE(SIDE_PARAM(_attr)), \
}
.u = { \
.side_array = { \
.elem_type = _elem_type, \
- .attr = SIDE_PARAM_SELECT_ARG1(_, ##_attr, side_attr_list()), \
+ .attr = SIDE_PTR_INIT(SIDE_PARAM_SELECT_ARG1(_, ##_attr, side_attr_list())), \
.length = _length, \
.nr_attr = SIDE_ARRAY_SIZE(SIDE_PARAM_SELECT_ARG1(_, ##_attr, side_attr_list())), \
}, \
.u = { \
.side_vla = { \
.elem_type = _elem_type, \
- .attr = SIDE_PARAM_SELECT_ARG1(_, ##_attr, side_attr_list()), \
+ .attr = SIDE_PTR_INIT(SIDE_PARAM_SELECT_ARG1(_, ##_attr, side_attr_list())), \
.nr_attr = SIDE_ARRAY_SIZE(SIDE_PARAM_SELECT_ARG1(_, ##_attr, side_attr_list())), \
}, \
}, \
.side_vla_visitor = { \
.elem_type = SIDE_PARAM(_elem_type), \
.visitor = _visitor, \
- .attr = SIDE_PARAM_SELECT_ARG1(_, ##_attr, side_attr_list()), \
+ .attr = SIDE_PTR_INIT(SIDE_PARAM_SELECT_ARG1(_, ##_attr, side_attr_list())), \
.nr_attr = SIDE_ARRAY_SIZE(SIDE_PARAM_SELECT_ARG1(_, ##_attr, side_attr_list())), \
}, \
}, \
.offset = _offset, \
.access_mode = _access_mode, \
.type = { \
- .attr = SIDE_PARAM_SELECT_ARG1(_, ##_attr, side_attr_list()), \
+ .attr = SIDE_PTR_INIT(SIDE_PARAM_SELECT_ARG1(_, ##_attr, side_attr_list())), \
.nr_attr = SIDE_ARRAY_SIZE(SIDE_PARAM_SELECT_ARG1(_, ##_attr, side_attr_list())), \
}, \
}, \
.offset = _offset, \
.access_mode = _access_mode, \
.type = { \
- .attr = SIDE_PARAM_SELECT_ARG1(_, ##_attr, side_attr_list()), \
+ .attr = SIDE_PTR_INIT(SIDE_PARAM_SELECT_ARG1(_, ##_attr, side_attr_list())), \
.nr_attr = SIDE_ARRAY_SIZE(SIDE_PARAM_SELECT_ARG1(_, ##_attr, side_attr_list())), \
.integer_size = _integer_size, \
.len_bits = _len_bits, \
.offset = _offset, \
.access_mode = _access_mode, \
.type = { \
- .attr = SIDE_PARAM_SELECT_ARG1(_, ##_attr, side_attr_list()), \
+ .attr = SIDE_PTR_INIT(SIDE_PARAM_SELECT_ARG1(_, ##_attr, side_attr_list())), \
.nr_attr = SIDE_ARRAY_SIZE(SIDE_PARAM_SELECT_ARG1(_, ##_attr, side_attr_list())), \
.float_size = _float_size, \
.byte_order = _byte_order, \
.offset = _offset, \
.access_mode = _access_mode, \
.type = { \
- .attr = SIDE_PARAM_SELECT_ARG1(_, ##_attr, side_attr_list()), \
+ .attr = SIDE_PTR_INIT(SIDE_PARAM_SELECT_ARG1(_, ##_attr, side_attr_list())), \
.nr_attr = SIDE_ARRAY_SIZE(SIDE_PARAM_SELECT_ARG1(_, ##_attr, side_attr_list())), \
.unit_size = _unit_size, \
.byte_order = _byte_order, \
.access_mode = _access_mode, \
.type = { \
.elem_type = _elem_type_gather, \
- .attr = SIDE_PARAM_SELECT_ARG1(_, ##_attr, side_attr_list()), \
+ .attr = SIDE_PTR_INIT(SIDE_PARAM_SELECT_ARG1(_, ##_attr, side_attr_list())), \
.length = _length, \
.nr_attr = SIDE_ARRAY_SIZE(SIDE_PARAM_SELECT_ARG1(_, ##_attr, side_attr_list())), \
}, \
.access_mode = _access_mode, \
.type = { \
.elem_type = _elem_type_gather, \
- .attr = SIDE_PARAM_SELECT_ARG1(_, ##_attr, side_attr_list()), \
+ .attr = SIDE_PTR_INIT(SIDE_PARAM_SELECT_ARG1(_, ##_attr, side_attr_list())), \
.nr_attr = SIDE_ARRAY_SIZE(SIDE_PARAM_SELECT_ARG1(_, ##_attr, side_attr_list())), \
}, \
}, \
.side_dynamic = { \
.side_byte = { \
.type = { \
- .attr = SIDE_PARAM_SELECT_ARG1(_, ##_attr, side_attr_list()), \
+ .attr = SIDE_PTR_INIT(SIDE_PARAM_SELECT_ARG1(_, ##_attr, side_attr_list())), \
.nr_attr = SIDE_ARRAY_SIZE(SIDE_PARAM_SELECT_ARG1(_, ##_attr, side_attr_list())), \
}, \
.value = (_val), \
.side_dynamic = { \
.side_string = { \
.type = { \
- .attr = SIDE_PARAM_SELECT_ARG1(_, ##_attr, side_attr_list()), \
+ .attr = SIDE_PTR_INIT(SIDE_PARAM_SELECT_ARG1(_, ##_attr, side_attr_list())), \
.nr_attr = SIDE_ARRAY_SIZE(SIDE_PARAM_SELECT_ARG1(_, ##_attr, side_attr_list())), \
.unit_size = _unit_size, \
.byte_order = _byte_order, \
.side_dynamic = { \
.side_integer = { \
.type = { \
- .attr = SIDE_PARAM_SELECT_ARG1(_, ##_attr, side_attr_list()), \
+ .attr = SIDE_PTR_INIT(SIDE_PARAM_SELECT_ARG1(_, ##_attr, side_attr_list())), \
.nr_attr = SIDE_ARRAY_SIZE(SIDE_PARAM_SELECT_ARG1(_, ##_attr, side_attr_list())), \
.integer_size = _integer_size, \
.len_bits = _len_bits, \
.side_dynamic = { \
.side_float = { \
.type = { \
- .attr = SIDE_PARAM_SELECT_ARG1(_, ##_attr, side_attr_list()), \
+ .attr = SIDE_PTR_INIT(SIDE_PARAM_SELECT_ARG1(_, ##_attr, side_attr_list())), \
.nr_attr = SIDE_ARRAY_SIZE(SIDE_PARAM_SELECT_ARG1(_, ##_attr, side_attr_list())), \
.float_size = _float_size, \
.byte_order = _byte_order, \
.side_dynamic_vla_visitor = { \
.app_ctx = _ctx, \
.visitor = _dynamic_vla_visitor, \
- .attr = SIDE_PARAM_SELECT_ARG1(_, ##_attr, side_attr_list()), \
+ .attr = SIDE_PTR_INIT(SIDE_PARAM_SELECT_ARG1(_, ##_attr, side_attr_list())), \
.nr_attr = SIDE_ARRAY_SIZE(SIDE_PARAM_SELECT_ARG1(_, ##_attr, side_attr_list())), \
}, \
}, \
.side_dynamic_struct_visitor = { \
.app_ctx = _ctx, \
.visitor = _dynamic_struct_visitor, \
- .attr = SIDE_PARAM_SELECT_ARG1(_, ##_attr, side_attr_list()), \
+ .attr = SIDE_PTR_INIT(SIDE_PARAM_SELECT_ARG1(_, ##_attr, side_attr_list())), \
.nr_attr = SIDE_ARRAY_SIZE(SIDE_PARAM_SELECT_ARG1(_, ##_attr, side_attr_list())), \
}, \
}, \
const struct side_arg _identifier##_vec[] = { _sav }; \
const struct side_arg_dynamic_vla _identifier = { \
.sav = _identifier##_vec, \
- .attr = SIDE_PARAM_SELECT_ARG1(_, ##_attr, side_attr_list()), \
+ .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())), \
}
const struct side_arg_dynamic_field _identifier##_fields[] = { _struct_fields }; \
const struct side_arg_dynamic_struct _identifier = { \
.fields = _identifier##_fields, \
- .attr = SIDE_PARAM_SELECT_ARG1(_, ##_attr, side_attr_list()), \
+ .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())), \
}
const struct side_arg_dynamic_field side_fields[] = { _var_fields }; \
const struct side_arg_dynamic_struct var_struct = { \
.fields = side_fields, \
- .attr = SIDE_PARAM_SELECT_ARG1(_, ##_attr, side_attr_list()), \
+ .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())), \
}; \
.provider_name = _provider, \
.event_name = _event, \
.fields = _fields, \
- .attr = SIDE_PARAM_SELECT_ARG1(_, ##_attr, side_attr_list()), \
+ .attr = SIDE_PTR_INIT(SIDE_PARAM_SELECT_ARG1(_, ##_attr, side_attr_list())), \
.flags = (_flags), \
.version = 0, \
.loglevel = _loglevel, \