X-Git-Url: https://git.lttng.org/?a=blobdiff_plain;f=liblttng-ust%2Fevent-notifier-notification.c;h=b3e2c94f1bd7a2d7180ad64256bcb325ea393e85;hb=6ba6fd60507f8e045bdc4f1be14e9d99c6a15f7f;hp=b4c666aa560364e064999bbb40ba027e7c131b7a;hpb=22c30e27e59035f165bfa0540022eeca113fcd59;p=lttng-ust.git diff --git a/liblttng-ust/event-notifier-notification.c b/liblttng-ust/event-notifier-notification.c index b4c666aa..b3e2c94f 100644 --- a/liblttng-ust/event-notifier-notification.c +++ b/liblttng-ust/event-notifier-notification.c @@ -8,9 +8,13 @@ #include #include +#include + #include #include +#include +#include "lttng-tracer-core.h" #include "ust-events-internal.h" #include "../libmsgpack/msgpack.h" #include "lttng-bytecode.h" @@ -60,7 +64,7 @@ void capture_enum(struct lttng_msgpack_writer *writer, static int64_t capture_sequence_element_signed(uint8_t *ptr, - struct lttng_ust_type_integer *integer_type) + const struct lttng_ust_type_integer *integer_type) { int64_t value; unsigned int size = integer_type->size; @@ -109,7 +113,7 @@ int64_t capture_sequence_element_signed(uint8_t *ptr, static uint64_t capture_sequence_element_unsigned(uint8_t *ptr, - struct lttng_ust_type_integer *integer_type) + const struct lttng_ust_type_integer *integer_type) { uint64_t value; unsigned int size = integer_type->size; @@ -160,8 +164,8 @@ static void capture_sequence(struct lttng_msgpack_writer *writer, struct lttng_interpreter_output *output) { - struct lttng_ust_type_integer *integer_type; - struct lttng_ust_type_common *nested_type; + const struct lttng_ust_type_integer *integer_type; + const struct lttng_ust_type_common *nested_type; uint8_t *ptr; bool signedness; int i; @@ -357,7 +361,8 @@ void notification_send(struct lttng_event_notifier_notification *notif, void lttng_event_notifier_notification_send( struct lttng_ust_event_notifier *event_notifier, - const char *stack_data) + const char *stack_data, + struct lttng_ust_notification_ctx *notif_ctx) { /* * This function is called from the probe, we must do dynamic @@ -367,7 +372,7 @@ void lttng_event_notifier_notification_send( notification_init(¬if, event_notifier); - if (caa_unlikely(!cds_list_empty(&event_notifier->capture_bytecode_runtime_head))) { + if (caa_unlikely(notif_ctx->eval_capture)) { struct lttng_ust_bytecode_runtime *capture_bc_runtime; /* @@ -376,8 +381,8 @@ void lttng_event_notifier_notification_send( * `output` parameter to the capture buffer. If the interpreter * fails, append an empty capture to the buffer. */ - cds_list_for_each_entry(capture_bc_runtime, - &event_notifier->capture_bytecode_runtime_head, node) { + cds_list_for_each_entry_rcu(capture_bc_runtime, + &event_notifier->priv->capture_bytecode_runtime_head, node) { struct lttng_interpreter_output output; if (capture_bc_runtime->interpreter_func(capture_bc_runtime,