X-Git-Url: http://git.liburcu.org/?a=blobdiff_plain;f=lttng-context.c;h=7c8f5d929393d8d14455d724d997a63068a479cf;hb=b53047135828b997a4eeb2cae7344cb169aa9c8c;hp=825eda5eb75acaeff3f7a0e0e81d1d0688faf160;hpb=b7cdc18250880cc44edeef4a4b42c8ac7a135a6d;p=lttng-modules.git diff --git a/lttng-context.c b/lttng-context.c index 825eda5e..7c8f5d92 100644 --- a/lttng-context.c +++ b/lttng-context.c @@ -11,9 +11,8 @@ #include #include #include -#include /* for wrapper_vmalloc_sync_all() */ -#include -#include +#include +#include /* * The filter implementation requires that two consecutive "get" for the @@ -82,12 +81,13 @@ struct lttng_ctx_field *lttng_append_context(struct lttng_ctx **ctx_p) struct lttng_ctx_field *new_fields; ctx->allocated_fields = max_t(size_t, 1, 2 * ctx->allocated_fields); - new_fields = lttng_kvzalloc(ctx->allocated_fields * sizeof(struct lttng_ctx_field), GFP_KERNEL); + new_fields = kvzalloc_node(ctx->allocated_fields * sizeof(struct lttng_ctx_field), + GFP_KERNEL, NUMA_NO_NODE); if (!new_fields) return NULL; if (ctx->fields) memcpy(new_fields, ctx->fields, sizeof(*ctx->fields) * ctx->nr_fields); - lttng_kvfree(ctx->fields); + kvfree(ctx->fields); ctx->fields = new_fields; } field = &ctx->fields[ctx->nr_fields]; @@ -112,95 +112,65 @@ void lttng_context_update(struct lttng_ctx *ctx) type = &ctx->fields[i].event_field.type; switch (type->atype) { case atype_integer: - field_align = type->u.basic.integer.alignment; + field_align = type->u.integer.alignment; break; - case atype_array: - case atype_array_bitfield: + case atype_array_nestable: { - struct lttng_basic_type *btype; + const struct lttng_type *nested_type; - btype = &type->u.array.elem_type; - switch (btype->atype) { + nested_type = type->u.array_nestable.elem_type; + switch (nested_type->atype) { case atype_integer: - field_align = btype->u.basic.integer.alignment; + field_align = nested_type->u.integer.alignment; break; case atype_string: break; - case atype_array: - case atype_sequence: - case atype_array_bitfield: - case atype_sequence_bitfield: - case atype_struct: - case atype_array_compound: - case atype_sequence_compound: - case atype_variant: + case atype_array_nestable: + case atype_sequence_nestable: + case atype_struct_nestable: + case atype_variant_nestable: default: WARN_ON_ONCE(1); break; } + field_align = max_t(size_t, field_align, + type->u.array_nestable.alignment); break; } - case atype_sequence: - case atype_sequence_bitfield: + case atype_sequence_nestable: { - struct lttng_basic_type *btype; + const struct lttng_type *nested_type; - btype = &type->u.sequence.length_type; - switch (btype->atype) { + nested_type = type->u.sequence_nestable.elem_type; + switch (nested_type->atype) { case atype_integer: - field_align = btype->u.basic.integer.alignment; - break; - - case atype_string: - case atype_array: - case atype_sequence: - case atype_array_bitfield: - case atype_sequence_bitfield: - case atype_struct: - case atype_array_compound: - case atype_sequence_compound: - case atype_variant: - default: - WARN_ON_ONCE(1); - break; - } - - btype = &type->u.sequence.elem_type; - switch (btype->atype) { - case atype_integer: - field_align = max_t(size_t, - field_align, - btype->u.basic.integer.alignment); + field_align = nested_type->u.integer.alignment; break; case atype_string: break; - case atype_array: - case atype_sequence: - case atype_array_bitfield: - case atype_sequence_bitfield: - case atype_struct: - case atype_array_compound: - case atype_sequence_compound: - case atype_variant: + case atype_array_nestable: + case atype_sequence_nestable: + case atype_struct_nestable: + case atype_variant_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_struct: - case atype_array_compound: - case atype_sequence_compound: - case atype_variant: + case atype_struct_nestable: + case atype_variant_nestable: break; - case atype_enum: + case atype_enum_nestable: default: WARN_ON_ONCE(1); break; @@ -235,7 +205,7 @@ void lttng_destroy_context(struct lttng_ctx *ctx) if (ctx->fields[i].destroy) ctx->fields[i].destroy(&ctx->fields[i]); } - lttng_kvfree(ctx->fields); + kvfree(ctx->fields); kfree(ctx); }