X-Git-Url: https://git.lttng.org/?a=blobdiff_plain;f=src%2Flttng-event-notifier-notification.c;h=1a40fed74101f86118aef131e46396c04904cf7a;hb=437d5aa59380583ce1cd14d394a53b398be1275d;hp=77e72842d410782e89aaa21bdb9f1e835e0ad936;hpb=ab04d7b1e3708b0da0771d054e97e76d3e0f7182;p=lttng-modules.git diff --git a/src/lttng-event-notifier-notification.c b/src/lttng-event-notifier-notification.c index 77e72842..1a40fed7 100644 --- a/src/lttng-event-notifier-notification.c +++ b/src/lttng-event-notifier-notification.c @@ -11,6 +11,8 @@ #include #include #include +#include +#include /* * The capture buffer size needs to be below 1024 bytes to avoid the @@ -94,7 +96,7 @@ end: static int64_t capture_sequence_element_signed(uint8_t *ptr, - const struct lttng_integer_type *type) + const struct lttng_kernel_type_integer *type) { int64_t value = 0; unsigned int size = type->size; @@ -143,7 +145,7 @@ int64_t capture_sequence_element_signed(uint8_t *ptr, static uint64_t capture_sequence_element_unsigned(uint8_t *ptr, - const struct lttng_integer_type *type) + const struct lttng_kernel_type_integer *type) { uint64_t value = 0; unsigned int size = type->size; @@ -193,8 +195,8 @@ uint64_t capture_sequence_element_unsigned(uint8_t *ptr, int capture_sequence(struct lttng_msgpack_writer *writer, struct lttng_interpreter_output *output) { - const struct lttng_integer_type *integer_type = NULL; - const struct lttng_type *nested_type; + const struct lttng_kernel_type_integer *integer_type = NULL; + const struct lttng_kernel_type_common *nested_type; uint8_t *ptr; bool signedness; int ret, i; @@ -207,13 +209,13 @@ int capture_sequence(struct lttng_msgpack_writer *writer, ptr = (uint8_t *) output->u.sequence.ptr; nested_type = output->u.sequence.nested_type; - switch (nested_type->atype) { - case atype_integer: - integer_type = &nested_type->u.integer; + switch (nested_type->type) { + case lttng_kernel_type_integer: + integer_type = lttng_kernel_get_type_integer(nested_type); break; - case atype_enum_nestable: + case lttng_kernel_type_enum: /* Treat enumeration as an integer. */ - integer_type = &nested_type->u.enum_nestable.container_type->u.integer; + integer_type = lttng_kernel_get_type_integer(lttng_kernel_get_type_enum(nested_type)->container_type); break; default: /* Capture of array of non-integer are not supported. */ @@ -357,11 +359,11 @@ void record_error(struct lttng_event_notifier *event_notifier) int ret; /* - * smp_load_acquire paired with smp_store_release orders + * lttng_smp_load_acquire paired with lttng_smp_store_release orders * creation of the error counter and setting error_counter_len * before the error_counter is used. */ - error_counter = smp_load_acquire(&event_notifier_group->error_counter); + error_counter = lttng_smp_load_acquire(&event_notifier_group->error_counter); /* This group may not have an error counter attached to it. */ if (!error_counter) return; @@ -425,7 +427,8 @@ void notification_send(struct lttng_event_notifier_notification *notif, void lttng_event_notifier_notification_send(struct lttng_event_notifier *event_notifier, struct lttng_probe_ctx *lttng_probe_ctx, - const char *stack_data) + const char *stack_data, + struct lttng_kernel_notifier_ctx *notif_ctx) { struct lttng_event_notifier_notification notif = { 0 }; int ret; @@ -439,7 +442,7 @@ void lttng_event_notifier_notification_send(struct lttng_event_notifier *event_n goto end; } - if (unlikely(!list_empty(&event_notifier->capture_bytecode_runtime_head))) { + if (unlikely(notif_ctx->eval_capture)) { struct lttng_bytecode_runtime *capture_bc_runtime; /* @@ -448,7 +451,7 @@ void lttng_event_notifier_notification_send(struct lttng_event_notifier *event_n * `output` parameter to the capture buffer. If the interpreter * fails, append an empty capture to the buffer. */ - list_for_each_entry(capture_bc_runtime, + list_for_each_entry_rcu(capture_bc_runtime, &event_notifier->capture_bytecode_runtime_head, node) { struct lttng_interpreter_output output;