X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;f=src%2Flib%2Fgraph%2Fmessage%2Fevent.c;h=0f7a8a0a561ffc05d2016bf50fa81e9015656ab5;hb=7704a0af9f2275321f8294df8c02f8a299b3134e;hp=95b39605ca30bb74880815da5e0a7a20fbb8ed29;hpb=a8f90e5d4a5876324aaefc98c3314b8a35c86644;p=babeltrace.git diff --git a/src/lib/graph/message/event.c b/src/lib/graph/message/event.c index 95b39605..0f7a8a0a 100644 --- a/src/lib/graph/message/event.c +++ b/src/lib/graph/message/event.c @@ -36,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 @@ -82,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 " @@ -109,7 +109,7 @@ 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_APPEND_CAUSE( "Cannot create event from event class: " @@ -140,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) { @@ -150,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); @@ -167,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 @@ -211,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); @@ -221,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; @@ -240,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; @@ -266,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; @@ -284,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; }