X-Git-Url: http://git.efficios.com/?p=babeltrace.git;a=blobdiff_plain;f=src%2Flib%2Fgraph%2Fmessage%2Fpacket.c;h=9afbb9f15681f271c6f9298217c2319a7e295f8b;hp=6bce712996b1f27910ca779e0d4800a6505bf56c;hb=0235b0db7de5bcacdb3650c92461f2ce5eb2143d;hpb=578e048b5debf169e286e5b5cc747b5d6c16886d diff --git a/src/lib/graph/message/packet.c b/src/lib/graph/message/packet.c index 6bce7129..9afbb9f1 100644 --- a/src/lib/graph/message/packet.c +++ b/src/lib/graph/message/packet.c @@ -1,29 +1,17 @@ /* + * SPDX-License-Identifier: MIT + * * Copyright 2017-2018 Philippe Proulx * Copyright 2016 Jérémie Galarneau - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. */ -#define BT_LOG_TAG "MSG-PACKET" -#include "lib/lib-logging.h" +#define BT_LOG_TAG "LIB/MSG-PACKET" +#include "lib/logging.h" + +#include +#include "lib/assert-pre.h" +#include "lib/assert-post.h" #include "compat/compiler.h" #include #include "lib/trace-ir/packet.h" @@ -32,12 +20,8 @@ #include "lib/trace-ir/stream.h" #include "lib/trace-ir/stream-class.h" #include "lib/graph/graph.h" -#include -#include -#include -#include +#include #include "common/assert.h" -#include "lib/assert-pre.h" #include "lib/object.h" #include @@ -51,7 +35,8 @@ struct bt_message *new_packet_message(struct bt_graph *graph, message = g_new0(struct bt_message_packet, 1); if (!message) { - BT_LOGE_STR("Failed to allocate one packet message."); + BT_LIB_LOGE_APPEND_CAUSE( + "Failed to allocate one packet message."); goto error; } @@ -81,7 +66,7 @@ struct bt_message *bt_message_packet_end_new(struct bt_graph *graph) static inline struct bt_message *create_packet_message( - struct bt_self_component_port_input_message_iterator *msg_iter, + struct bt_message_iterator *msg_iter, struct bt_packet *packet, struct bt_object_pool *pool, bool with_cs, uint64_t raw_value) { @@ -97,6 +82,12 @@ struct bt_message *create_packet_message( stream_class = bt_stream_borrow_class(stream); BT_ASSERT(stream_class); + /* + * It's not possible to create a packet from a stream of which + * the class indicates that packets are not supported. + */ + BT_ASSERT(stream_class->supports_packets); + if (pool == &msg_iter->graph->packet_begin_msg_pool) { need_cs = stream_class->packets_have_beginning_default_clock_snapshot; } else { @@ -135,7 +126,7 @@ struct bt_message *create_packet_message( message->default_cs = bt_clock_snapshot_create( stream_class->default_clock_class); if (!message->default_cs) { - bt_object_put_no_null_check(message); + bt_object_put_ref_no_null_check(message); message = NULL; goto end; } @@ -145,7 +136,7 @@ struct bt_message *create_packet_message( BT_ASSERT(!message->packet); message->packet = packet; - bt_object_get_no_null_check_no_parent_check( + bt_object_get_ref_no_null_check_no_parent_check( &message->packet->base); bt_packet_set_is_frozen(packet, true); BT_LIB_LOGD("Created packet message object: " @@ -161,9 +152,10 @@ struct bt_message *bt_message_packet_beginning_create( struct bt_self_message_iterator *self_msg_iter, const struct bt_packet *packet) { - struct bt_self_component_port_input_message_iterator *msg_iter = + struct bt_message_iterator *msg_iter = (void *) self_msg_iter; + BT_ASSERT_PRE_DEV_NO_ERROR(); BT_ASSERT_PRE_NON_NULL(msg_iter, "Message iterator"); return create_packet_message(msg_iter, (void *) packet, &msg_iter->graph->packet_begin_msg_pool, false, 0); @@ -173,9 +165,10 @@ struct bt_message *bt_message_packet_beginning_create_with_default_clock_snapsho struct bt_self_message_iterator *self_msg_iter, const struct bt_packet *packet, uint64_t raw_value) { - struct bt_self_component_port_input_message_iterator *msg_iter = + struct bt_message_iterator *msg_iter = (void *) self_msg_iter; + BT_ASSERT_PRE_DEV_NO_ERROR(); BT_ASSERT_PRE_NON_NULL(msg_iter, "Message iterator"); return create_packet_message(msg_iter, (void *) packet, &msg_iter->graph->packet_begin_msg_pool, true, raw_value); @@ -185,9 +178,10 @@ struct bt_message *bt_message_packet_end_create( struct bt_self_message_iterator *self_msg_iter, const struct bt_packet *packet) { - struct bt_self_component_port_input_message_iterator *msg_iter = + struct bt_message_iterator *msg_iter = (void *) self_msg_iter; + BT_ASSERT_PRE_DEV_NO_ERROR(); BT_ASSERT_PRE_NON_NULL(msg_iter, "Message iterator"); return create_packet_message(msg_iter, (void *) packet, &msg_iter->graph->packet_end_msg_pool, false, 0); @@ -197,9 +191,10 @@ struct bt_message *bt_message_packet_end_create_with_default_clock_snapshot( struct bt_self_message_iterator *self_msg_iter, const struct bt_packet *packet, uint64_t raw_value) { - struct bt_self_component_port_input_message_iterator *msg_iter = + struct bt_message_iterator *msg_iter = (void *) self_msg_iter; + BT_ASSERT_PRE_DEV_NO_ERROR(); BT_ASSERT_PRE_NON_NULL(msg_iter, "Message iterator"); return create_packet_message(msg_iter, (void *) packet, &msg_iter->graph->packet_end_msg_pool, true, raw_value); @@ -229,7 +224,7 @@ void recycle_packet_message(struct bt_message *msg, struct bt_object_pool *pool) BT_LIB_LOGD("Recycling packet message: %!+n", msg); bt_message_reset(msg); - bt_object_put_no_null_check(&packet_msg->packet->base); + bt_object_put_ref_no_null_check(&packet_msg->packet->base); if (packet_msg->default_cs) { bt_clock_snapshot_recycle(packet_msg->default_cs); @@ -246,7 +241,7 @@ void bt_message_packet_beginning_recycle(struct bt_message *msg) { BT_ASSERT(msg); - if (unlikely(!msg->graph)) { + if (G_UNLIKELY(!msg->graph)) { bt_message_packet_destroy(msg); return; } @@ -259,7 +254,7 @@ void bt_message_packet_end_recycle(struct bt_message *msg) { BT_ASSERT(msg); - if (unlikely(!msg->graph)) { + if (G_UNLIKELY(!msg->graph)) { bt_message_packet_destroy(msg); return; } @@ -272,8 +267,8 @@ struct bt_packet *bt_message_packet_beginning_borrow_packet( { struct bt_message_packet *packet_msg = (void *) message; - BT_ASSERT_PRE_NON_NULL(message, "Message"); - BT_ASSERT_PRE_MSG_IS_TYPE(message, + BT_ASSERT_PRE_DEV_NON_NULL(message, "Message"); + BT_ASSERT_PRE_DEV_MSG_IS_TYPE(message, BT_MESSAGE_TYPE_PACKET_BEGINNING); return packet_msg->packet; } @@ -290,8 +285,8 @@ struct bt_packet *bt_message_packet_end_borrow_packet( { struct bt_message_packet *packet_msg = (void *) message; - BT_ASSERT_PRE_NON_NULL(message, "Message"); - BT_ASSERT_PRE_MSG_IS_TYPE(message, + BT_ASSERT_PRE_DEV_NON_NULL(message, "Message"); + BT_ASSERT_PRE_DEV_MSG_IS_TYPE(message, BT_MESSAGE_TYPE_PACKET_END); return packet_msg->packet; } @@ -310,8 +305,9 @@ borrow_packet_message_default_clock_snapshot_const( { struct bt_message_packet *packet_msg = (void *) message; - BT_ASSERT(message); - BT_ASSERT_PRE(packet_msg->packet->stream->class->default_clock_class, + BT_ASSERT_DBG(message); + BT_ASSERT_PRE_DEV( + packet_msg->packet->stream->class->default_clock_class, "Message's stream's class has no default clock class: " "%![msg-]+n, %![sc-]+S", message, packet_msg->packet->stream->class); @@ -322,8 +318,8 @@ const struct bt_clock_snapshot * bt_message_packet_beginning_borrow_default_clock_snapshot_const( const struct bt_message *msg) { - BT_ASSERT_PRE_NON_NULL(msg, "Message"); - BT_ASSERT_PRE_MSG_IS_TYPE(msg, BT_MESSAGE_TYPE_PACKET_BEGINNING); + BT_ASSERT_PRE_DEV_NON_NULL(msg, "Message"); + BT_ASSERT_PRE_DEV_MSG_IS_TYPE(msg, BT_MESSAGE_TYPE_PACKET_BEGINNING); return borrow_packet_message_default_clock_snapshot_const(msg); } @@ -331,8 +327,8 @@ const struct bt_clock_snapshot * bt_message_packet_end_borrow_default_clock_snapshot_const( const struct bt_message *msg) { - BT_ASSERT_PRE_NON_NULL(msg, "Message"); - BT_ASSERT_PRE_MSG_IS_TYPE(msg, BT_MESSAGE_TYPE_PACKET_END); + BT_ASSERT_PRE_DEV_NON_NULL(msg, "Message"); + BT_ASSERT_PRE_DEV_MSG_IS_TYPE(msg, BT_MESSAGE_TYPE_PACKET_END); return borrow_packet_message_default_clock_snapshot_const(msg); } @@ -343,7 +339,7 @@ borrow_packet_message_stream_class_default_clock_class( { struct bt_message_packet *packet_msg = (void *) msg; - BT_ASSERT(msg); + BT_ASSERT_DBG(msg); return packet_msg->packet->stream->class->default_clock_class; } @@ -351,8 +347,8 @@ const struct bt_clock_class * bt_message_packet_beginning_borrow_stream_class_default_clock_class_const( const struct bt_message *msg) { - BT_ASSERT_PRE_NON_NULL(msg, "Message"); - BT_ASSERT_PRE_MSG_IS_TYPE(msg, BT_MESSAGE_TYPE_PACKET_BEGINNING); + BT_ASSERT_PRE_DEV_NON_NULL(msg, "Message"); + BT_ASSERT_PRE_DEV_MSG_IS_TYPE(msg, BT_MESSAGE_TYPE_PACKET_BEGINNING); return borrow_packet_message_stream_class_default_clock_class(msg); } @@ -360,7 +356,7 @@ const struct bt_clock_class * bt_message_packet_end_borrow_stream_class_default_clock_class_const( const struct bt_message *msg) { - BT_ASSERT_PRE_NON_NULL(msg, "Message"); - BT_ASSERT_PRE_MSG_IS_TYPE(msg, BT_MESSAGE_TYPE_PACKET_END); + BT_ASSERT_PRE_DEV_NON_NULL(msg, "Message"); + BT_ASSERT_PRE_DEV_MSG_IS_TYPE(msg, BT_MESSAGE_TYPE_PACKET_END); return borrow_packet_message_stream_class_default_clock_class(msg); }