X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;f=src%2Flib%2Fgraph%2Fmessage%2Fevent.c;h=0f7a8a0a561ffc05d2016bf50fa81e9015656ab5;hb=43c59509042845f8d42c3e99ec74d45fa2dc0908;hp=1d74e1dda2725f2f9ed8f8d40856321231b28b52;hpb=91d8147391efdc4d42cc4e1c171a65c0372a008f;p=babeltrace.git diff --git a/src/lib/graph/message/event.c b/src/lib/graph/message/event.c index 1d74e1dd..0f7a8a0a 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 @@ -35,22 +36,20 @@ #include #include "lib/trace-ir/clock-snapshot.h" #include "lib/graph/graph.h" -#include -#include +#include #include #include #include #include "event.h" -BT_ASSERT_PRE_FUNC static inline bool event_class_has_trace(struct bt_event_class *event_class) { struct bt_stream_class *stream_class; stream_class = bt_event_class_borrow_stream_class_inline(event_class); - BT_ASSERT(stream_class); - return bt_stream_class_borrow_trace_class(stream_class) != NULL; + BT_ASSERT_DBG(stream_class); + return bt_stream_class_borrow_trace_class(stream_class); } BT_HIDDEN @@ -61,7 +60,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,24 +80,26 @@ 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 = + struct bt_message_iterator *msg_iter = (void *) self_msg_iter; struct bt_message_event *message = NULL; 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_DBG(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); - BT_ASSERT(stream_class); + BT_ASSERT_DBG(stream_class); BT_ASSERT_PRE((with_cs && stream_class->default_clock_class) || (!with_cs && !stream_class->default_clock_class), "Creating an event message with a default clock snapshot, but without " @@ -107,9 +109,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); + event = bt_event_create(event_class, packet, stream); if (G_UNLIKELY(!event)) { - BT_LIB_LOGE("Cannot create event from event class: " + BT_LIB_LOGE_APPEND_CAUSE( + "Cannot create event from event class: " "%![ec-]+E", event_class); goto error; } @@ -137,7 +140,7 @@ struct bt_message *create_event_message( } if (with_cs) { - BT_ASSERT(stream_class->default_clock_class); + BT_ASSERT_DBG(stream_class->default_clock_class); message->default_cs = bt_clock_snapshot_create( stream_class->default_clock_class); if (!message->default_cs) { @@ -147,9 +150,14 @@ struct bt_message *create_event_message( bt_clock_snapshot_set_raw_value(message->default_cs, raw_value); } - BT_ASSERT(!message->event); + BT_ASSERT_DBG(!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 +172,49 @@ 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_DEV_NO_ERROR(); + 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_DEV_NO_ERROR(); + 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_DEV_NO_ERROR(); + 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_DEV_NO_ERROR(); + 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 @@ -208,7 +244,7 @@ void bt_message_event_recycle(struct bt_message *msg) struct bt_message_event *event_msg = (void *) msg; struct bt_graph *graph; - BT_ASSERT(event_msg); + BT_ASSERT_DBG(event_msg); if (G_UNLIKELY(!msg->graph)) { bt_message_event_destroy(msg); @@ -218,7 +254,7 @@ void bt_message_event_recycle(struct bt_message *msg) BT_LIB_LOGD("Recycling event message: %![msg-]+n, %![event-]+e", msg, event_msg->event); bt_message_reset(msg); - BT_ASSERT(event_msg->event); + BT_ASSERT_DBG(event_msg->event); bt_event_recycle(event_msg->event); event_msg->event = NULL; @@ -237,8 +273,8 @@ struct bt_event *borrow_event(struct bt_message *message) { struct bt_message_event *event_message; - BT_ASSERT_PRE_NON_NULL(message, "Message"); - BT_ASSERT_PRE_MSG_IS_TYPE(message, BT_MESSAGE_TYPE_EVENT); + BT_ASSERT_PRE_DEV_NON_NULL(message, "Message"); + BT_ASSERT_PRE_DEV_MSG_IS_TYPE(message, BT_MESSAGE_TYPE_EVENT); event_message = container_of(message, struct bt_message_event, parent); return event_message->event; @@ -263,12 +299,12 @@ bt_message_event_borrow_default_clock_snapshot_const( struct bt_message_event *event_msg = (void *) msg; struct bt_stream_class *stream_class; - BT_ASSERT_PRE_NON_NULL(msg, "Message"); - BT_ASSERT_PRE_MSG_IS_TYPE(msg, BT_MESSAGE_TYPE_EVENT); + BT_ASSERT_PRE_DEV_NON_NULL(msg, "Message"); + BT_ASSERT_PRE_DEV_MSG_IS_TYPE(msg, BT_MESSAGE_TYPE_EVENT); stream_class = bt_event_class_borrow_stream_class_inline( event_msg->event->class); - BT_ASSERT(stream_class); - BT_ASSERT_PRE(stream_class->default_clock_class, + BT_ASSERT_DBG(stream_class); + BT_ASSERT_PRE_DEV(stream_class->default_clock_class, "Message's stream's class has no default clock class: " "%![msg-]+n, %![sc-]+S", msg, stream_class); return event_msg->default_cs; @@ -281,10 +317,10 @@ bt_message_event_borrow_stream_class_default_clock_class_const( struct bt_message_event *event_msg = (void *) msg; struct bt_stream_class *stream_class; - BT_ASSERT_PRE_NON_NULL(msg, "Message"); - BT_ASSERT_PRE_MSG_IS_TYPE(msg, BT_MESSAGE_TYPE_EVENT); + BT_ASSERT_PRE_DEV_NON_NULL(msg, "Message"); + BT_ASSERT_PRE_DEV_MSG_IS_TYPE(msg, BT_MESSAGE_TYPE_EVENT); stream_class = bt_event_class_borrow_stream_class_inline( event_msg->event->class); - BT_ASSERT(stream_class); + BT_ASSERT_DBG(stream_class); return stream_class->default_clock_class; }