X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;f=src%2Flib%2Fgraph%2Fmessage%2Fevent.c;h=5f3c90d4912a83bb6a9d67e8e0f6d77e211afcd0;hb=26fc5aedf48df3f1654fe4d0b6ada1a10cd804f2;hp=00b428c203f9f52e268a4d60657e74d73d77675d;hpb=578e048b5debf169e286e5b5cc747b5d6c16886d;p=babeltrace.git diff --git a/src/lib/graph/message/event.c b/src/lib/graph/message/event.c index 00b428c2..5f3c90d4 100644 --- a/src/lib/graph/message/event.c +++ b/src/lib/graph/message/event.c @@ -21,11 +21,12 @@ * SOFTWARE. */ -#define BT_LOG_TAG "MSG-EVENT" -#include "lib/lib-logging.h" +#define BT_LOG_TAG "LIB/MSG-EVENT" +#include "lib/logging.h" #include "common/assert.h" #include "lib/assert-pre.h" +#include "lib/assert-post.h" #include "compat/compiler.h" #include "lib/object.h" #include @@ -61,7 +62,8 @@ struct bt_message *bt_message_event_new( message = g_new0(struct bt_message_event, 1); if (!message) { - BT_LOGE_STR("Failed to allocate one event message."); + BT_LIB_LOGE_APPEND_CAUSE( + "Failed to allocate one event message."); goto error; } @@ -80,7 +82,8 @@ static inline struct bt_message *create_event_message( struct bt_self_message_iterator *self_msg_iter, const struct bt_event_class *c_event_class, - const struct bt_packet *c_packet, bool with_cs, + const struct bt_packet *c_packet, + const struct bt_stream *c_stream, bool with_cs, uint64_t raw_value) { struct bt_self_component_port_input_message_iterator *msg_iter = @@ -89,11 +92,12 @@ struct bt_message *create_event_message( struct bt_event_class *event_class = (void *) c_event_class; struct bt_stream_class *stream_class; struct bt_packet *packet = (void *) c_packet; + struct bt_stream *stream = (void *) c_stream; struct bt_event *event; + BT_ASSERT(stream); BT_ASSERT_PRE_NON_NULL(msg_iter, "Message iterator"); BT_ASSERT_PRE_NON_NULL(event_class, "Event class"); - BT_ASSERT_PRE_NON_NULL(packet, "Packet"); BT_ASSERT_PRE(event_class_has_trace(event_class), "Event class is not part of a trace: %!+E", event_class); stream_class = bt_event_class_borrow_stream_class_inline(event_class); @@ -107,9 +111,10 @@ struct bt_message *create_event_message( "cs-val=%" PRIu64, event_class, stream_class, with_cs, raw_value); BT_LIB_LOGD("Creating event message object: %![ec-]+E", event_class); - event = bt_event_create(event_class, packet); - if (unlikely(!event)) { - BT_LIB_LOGE("Cannot create event from event class: " + event = bt_event_create(event_class, packet, stream); + if (G_UNLIKELY(!event)) { + BT_LIB_LOGE_APPEND_CAUSE( + "Cannot create event from event class: " "%![ec-]+E", event_class); goto error; } @@ -131,7 +136,7 @@ struct bt_message *create_event_message( */ message = (void *) bt_message_create_from_pool( &msg_iter->graph->event_msg_pool, msg_iter->graph); - if (unlikely(!message)) { + if (G_UNLIKELY(!message)) { /* bt_message_create_from_pool() logs errors */ goto error; } @@ -149,7 +154,12 @@ struct bt_message *create_event_message( BT_ASSERT(!message->event); message->event = event; - bt_packet_set_is_frozen(packet, true); + + if (packet) { + bt_packet_set_is_frozen(packet, true); + } + + bt_stream_freeze(stream); bt_event_class_freeze(event_class); BT_LIB_LOGD("Created event message object: " "%![msg-]+n, %![event-]+e", message, event); @@ -164,21 +174,45 @@ end: } struct bt_message *bt_message_event_create( + struct bt_self_message_iterator *msg_iter, + const struct bt_event_class *event_class, + const struct bt_stream *stream) +{ + BT_ASSERT_PRE_NON_NULL(stream, "Stream"); + return create_event_message(msg_iter, event_class, NULL, stream, false, 0); +} + +struct bt_message *bt_message_event_create_with_packet( struct bt_self_message_iterator *msg_iter, const struct bt_event_class *event_class, const struct bt_packet *packet) { - return create_event_message(msg_iter, event_class, packet, false, 0); + BT_ASSERT_PRE_NON_NULL(packet, "Packet"); + return create_event_message(msg_iter, event_class, packet, + packet->stream, false, 0); } struct bt_message *bt_message_event_create_with_default_clock_snapshot( + struct bt_self_message_iterator *msg_iter, + const struct bt_event_class *event_class, + const struct bt_stream *stream, + uint64_t raw_value) +{ + BT_ASSERT_PRE_NON_NULL(stream, "Stream"); + return create_event_message(msg_iter, event_class, NULL, stream, + true, raw_value); +} + +struct bt_message * +bt_message_event_create_with_packet_and_default_clock_snapshot( struct bt_self_message_iterator *msg_iter, const struct bt_event_class *event_class, const struct bt_packet *packet, uint64_t raw_value) { + BT_ASSERT_PRE_NON_NULL(packet, "Packet"); return create_event_message(msg_iter, event_class, packet, - true, raw_value); + packet->stream, true, raw_value); } BT_HIDDEN @@ -210,7 +244,7 @@ void bt_message_event_recycle(struct bt_message *msg) BT_ASSERT(event_msg); - if (unlikely(!msg->graph)) { + if (G_UNLIKELY(!msg->graph)) { bt_message_event_destroy(msg); return; }