-/*
- * lttng_context_update() should be called at least once between context
- * modification and trace start.
- */
-void lttng_context_update(struct lttng_ctx *ctx)
-{
- int i;
- size_t largest_align = 8; /* in bits */
-
- for (i = 0; i < ctx->nr_fields; i++) {
- struct lttng_type *type;
- size_t field_align = 8;
-
- type = &ctx->fields[i].event_field.type;
- switch (type->atype) {
- case atype_integer:
- field_align = type->u.integer.alignment;
- break;
- case atype_array:
- {
- struct lttng_basic_type *btype;
-
- btype = &type->u.legacy.array.elem_type;
- switch (btype->atype) {
- case atype_integer:
- field_align = btype->u.basic.integer.alignment;
- break;
- case atype_string:
- break;
-
- case atype_array:
- case atype_array_nestable:
- case atype_sequence:
- case atype_sequence_nestable:
- default:
- WARN_ON_ONCE(1);
- break;
- }
- break;
- }
- case atype_array_nestable:
- {
- const struct lttng_type *nested_type;
-
- nested_type = type->u.array_nestable.elem_type;
- switch (nested_type->atype) {
- case atype_integer:
- field_align = nested_type->u.integer.alignment;
- break;
- case atype_string:
- break;
-
- case atype_array:
- case atype_array_nestable:
- case atype_sequence:
- case atype_sequence_nestable:
- default:
- WARN_ON_ONCE(1);
- break;
- }
- field_align = max_t(size_t, field_align,
- type->u.array_nestable.alignment);
- break;
- }
- case atype_sequence:
- {
- struct lttng_basic_type *btype;
-
- btype = &type->u.legacy.sequence.length_type;
- switch (btype->atype) {
- case atype_integer:
- field_align = btype->u.basic.integer.alignment;
- break;
-
- case atype_string:
- case atype_array:
- case atype_array_nestable:
- case atype_sequence:
- case atype_sequence_nestable:
- default:
- WARN_ON_ONCE(1);
- break;
- }
-
- btype = &type->u.legacy.sequence.elem_type;
- switch (btype->atype) {
- case atype_integer:
- field_align = max_t(size_t,
- field_align,
- btype->u.basic.integer.alignment);
- break;
-
- case atype_string:
- break;
-
- case atype_array:
- case atype_array_nestable:
- case atype_sequence:
- case atype_sequence_nestable:
- default:
- WARN_ON_ONCE(1);
- break;
- }
- break;
- }
- case atype_sequence_nestable:
- {
- const struct lttng_type *nested_type;
-
- nested_type = type->u.sequence_nestable.elem_type;
- switch (nested_type->atype) {
- case atype_integer:
- field_align = nested_type->u.integer.alignment;
- break;
-
- case atype_string:
- break;
-
- case atype_array:
- case atype_array_nestable:
- case atype_sequence:
- case atype_sequence_nestable:
- default:
- WARN_ON_ONCE(1);
- break;
- }
- field_align = max_t(size_t, field_align,
- type->u.sequence_nestable.alignment);
- break;
- }
- case atype_string:
- break;
- case atype_dynamic:
- break;
- case atype_enum:
- case atype_enum_nestable:
- default:
- WARN_ON_ONCE(1);
- break;
- }
- largest_align = max_t(size_t, largest_align, field_align);
- }
- ctx->largest_align = largest_align >> 3; /* bits to bytes */
-}
-
-/*
- * Remove last context field.
- */
-void lttng_remove_context_field(struct lttng_ctx **ctx_p,
- struct lttng_ctx_field *field)