/*
- * Copyright 2019 Francis Deslauriers <francis.deslauriers@efficios.com>
- *
- * 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:
+ * SPDX-License-Identifier: MIT
*
- * 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.
+ * Copyright 2019 Francis Deslauriers <francis.deslauriers@efficios.com>
*/
#include <babeltrace2/babeltrace.h>
}
/*
- * Compare 2 messages to order them in a determinitic way based on their
+ * Compare 2 messages to order them in a deterministic way based on their
* types.
- * Returns -1 is left mesage must go first
- * Returns 1 is right mesage must go first
+ * Returns -1 is left message must go first
+ * Returns 1 is right message must go first
*/
static
int compare_messages_by_type(struct messages_to_compare *msgs)
return ret;
}
+
+static
+int compare_clock_classes(const bt_clock_class *left_cc,
+ const bt_clock_class *right_cc)
+{
+ int ret;
+ const char *left_clock_class_name, *right_clock_class_name;
+ bt_uuid left_clock_class_uuid, right_clock_class_uuid;
+ uint64_t left_freq, right_freq, left_prec, right_prec;
+
+ left_clock_class_uuid = bt_clock_class_get_uuid(left_cc);
+ right_clock_class_uuid = bt_clock_class_get_uuid(right_cc);
+
+ if (left_clock_class_uuid && !right_clock_class_uuid) {
+ ret = -1;
+ goto end;
+ } else if (!left_clock_class_uuid && right_clock_class_uuid) {
+ ret = 1;
+ goto end;
+ } else if (left_clock_class_uuid && right_clock_class_uuid) {
+ ret = bt_uuid_compare(left_clock_class_uuid,
+ right_clock_class_uuid);
+ if (ret != 0) {
+ goto end;
+ }
+ }
+
+
+ left_clock_class_name = bt_clock_class_get_name(left_cc);
+ right_clock_class_name = bt_clock_class_get_name(right_cc);
+
+ if (left_clock_class_name && !right_clock_class_name) {
+ ret = -1;
+ goto end;
+ } else if (!left_clock_class_name && right_clock_class_name) {
+ ret = 1;
+ goto end;
+ } else if (left_clock_class_name && right_clock_class_name) {
+ ret = strcmp(left_clock_class_name, right_clock_class_name);
+ if (ret != 0) {
+ goto end;
+ }
+ }
+
+ left_freq = bt_clock_class_get_frequency(left_cc);
+ right_freq = bt_clock_class_get_frequency(right_cc);
+
+ ret = right_freq - left_freq;
+ if (ret != 0) {
+ goto end;
+ }
+
+ left_prec = bt_clock_class_get_precision(left_cc);
+ right_prec = bt_clock_class_get_precision(right_cc);
+
+ ret = right_prec - left_prec;
+ if (ret != 0) {
+ goto end;
+ }
+
+end:
+ return ret;
+}
+
static
int compare_streams(const bt_stream *left_stream, const bt_stream *right_stream)
{
* No need to compare stream id as it was checked earlier and if we are
* here it means they are identical or both absent.
*/
- BT_ASSERT(bt_stream_get_id(left_stream) ==
+ BT_ASSERT_DBG(bt_stream_get_id(left_stream) ==
bt_stream_get_id(right_stream));
/* Compare stream name. */
* No need to compare stream class id as it was checked earlier and if
* we are here it means they are identical.
*/
- BT_ASSERT(bt_stream_class_get_id(left_stream_class) ==
+ BT_ASSERT_DBG(bt_stream_class_get_id(left_stream_class) ==
bt_stream_class_get_id(right_stream_class));
/* Compare stream class name. */
}
static
-int compare_clock_snapshots_and_clock_classes(const bt_clock_snapshot *left_cs,
+int compare_clock_snapshots(const bt_clock_snapshot *left_cs,
const bt_clock_snapshot *right_cs)
{
- int ret;
- uint64_t left_freq, right_freq, left_prec, right_prec;
- uint64_t left_cs_value, right_cs_value;
- const bt_clock_class *left_clock_class, *right_clock_class;
- const char *left_clock_class_name, *right_clock_class_name;
- left_cs_value = bt_clock_snapshot_get_value(left_cs);
- right_cs_value = bt_clock_snapshot_get_value(right_cs);
- bt_uuid left_clock_class_uuid, right_clock_class_uuid;
+ uint64_t left_cs_value = bt_clock_snapshot_get_value(left_cs);
+ uint64_t right_cs_value = bt_clock_snapshot_get_value(right_cs);
- ret = left_cs_value - right_cs_value;
- if (ret != 0) {
- goto end;
- }
-
- left_clock_class = bt_clock_snapshot_borrow_clock_class_const(left_cs);
- right_clock_class = bt_clock_snapshot_borrow_clock_class_const(right_cs);
-
- left_clock_class_uuid = bt_clock_class_get_uuid(left_clock_class);
- right_clock_class_uuid = bt_clock_class_get_uuid(right_clock_class);
-
- if (left_clock_class_uuid && !right_clock_class_uuid) {
- ret = -1;
- goto end;
- } else if (!left_clock_class_uuid && right_clock_class_uuid) {
- ret = 1;
- goto end;
- } else if (left_clock_class_uuid && right_clock_class_uuid) {
- ret = bt_uuid_compare(left_clock_class_uuid,
- right_clock_class_uuid);
- if (ret != 0) {
- goto end;
- }
- }
-
-
- left_clock_class_name = bt_clock_class_get_name(left_clock_class);
- right_clock_class_name = bt_clock_class_get_name(right_clock_class);
-
- if (left_clock_class_name && !right_clock_class_name) {
- ret = -1;
- goto end;
- } else if (!left_clock_class_name && right_clock_class_name) {
- ret = 1;
- goto end;
- } else if (left_clock_class_name && right_clock_class_name) {
- ret = strcmp(left_clock_class_name, right_clock_class_name);
- if (ret != 0) {
- goto end;
- }
- }
-
- left_freq = bt_clock_class_get_frequency(left_clock_class);
- right_freq = bt_clock_class_get_frequency(right_clock_class);
-
- ret = right_freq - left_freq;
- if (ret != 0) {
- goto end;
- }
-
- left_prec = bt_clock_class_get_precision(left_clock_class);
- right_prec = bt_clock_class_get_precision(right_clock_class);
-
- ret = right_prec - left_prec;
- if (ret != 0) {
- goto end;
- }
-
-end:
- return ret;
+ return left_cs_value - right_cs_value;
}
static
* Both messages are of the same type, we must compare characterics of
* the messages such as the attributes of the event in a event message.
*/
- BT_ASSERT(bt_message_get_type(msgs->left.msg) ==
+ BT_ASSERT_DBG(bt_message_get_type(msgs->left.msg) ==
bt_message_get_type(msgs->right.msg));
switch (bt_message_get_type(msgs->left.msg)) {
const bt_clock_snapshot *right_end_cs =
bt_message_discarded_events_borrow_end_default_clock_snapshot_const(msgs->right.msg);
- ret = compare_clock_snapshots_and_clock_classes(
- left_beg_cs, right_beg_cs);
+ ret = compare_clock_snapshots(left_beg_cs, right_beg_cs);
if (ret) {
goto end;
}
- ret = compare_clock_snapshots_and_clock_classes(
- left_end_cs, right_end_cs);
+ ret = compare_clock_snapshots(left_end_cs, right_end_cs);
if (ret) {
goto end;
}
+
+ ret = compare_clock_classes(
+ bt_clock_snapshot_borrow_clock_class_const(left_beg_cs),
+ bt_clock_snapshot_borrow_clock_class_const(right_beg_cs));
+ if (ret != 0) {
+ goto end;
+ }
}
left_event_count_avail =
const bt_clock_snapshot *right_end_cs =
bt_message_discarded_packets_borrow_end_default_clock_snapshot_const(msgs->right.msg);
- ret = compare_clock_snapshots_and_clock_classes(
- left_beg_cs, right_beg_cs);
+ ret = compare_clock_snapshots(left_beg_cs, right_beg_cs);
if (ret) {
goto end;
}
- ret = compare_clock_snapshots_and_clock_classes(
- left_end_cs, right_end_cs);
+ ret = compare_clock_snapshots(left_end_cs, right_end_cs);
if (ret) {
goto end;
}
+
+ ret = compare_clock_classes(
+ bt_clock_snapshot_borrow_clock_class_const(left_beg_cs),
+ bt_clock_snapshot_borrow_clock_class_const(right_beg_cs));
+ if (ret != 0) {
+ goto end;
+ }
}
left_packet_count_avail = bt_message_discarded_packets_get_count(
const bt_clock_snapshot *right_cs =
bt_message_message_iterator_inactivity_borrow_clock_snapshot_const(msgs->right.msg);
- ret = compare_clock_snapshots_and_clock_classes(
- left_cs, right_cs);
+ ret = compare_clock_snapshots(left_cs, right_cs);
+ if (ret != 0) {
+ goto end;
+ }
+
+ ret = compare_clock_classes(
+ bt_clock_snapshot_borrow_clock_class_const(left_cs),
+ bt_clock_snapshot_borrow_clock_class_const(right_cs));
if (ret != 0) {
goto end;
}
return ret;
}
-BT_HIDDEN
int common_muxing_compare_messages(const bt_message *left_msg,
const bt_message *right_msg)
{
int ret = 0;
struct messages_to_compare msgs;
- BT_ASSERT(left_msg != right_msg);
+ BT_ASSERT_DBG(left_msg != right_msg);
msgs.left.msg = left_msg;
msgs.left.trace = borrow_trace(left_msg);