From cfddb03e13ef1d0033f748e7a20910522d6e434e Mon Sep 17 00:00:00 2001 From: Yannick Brosseau Date: Mon, 11 Mar 2013 18:20:04 -0400 Subject: [PATCH] Use the in development bt_iter_equals_pos Added configure check and fallback in case you do not have the prototype version of babeltrace Signed-off-by: Yannick Brosseau --- configure.ac | 5 +++++ lttv/lttv/traceset.c | 26 +++++++++++++++----------- 2 files changed, 20 insertions(+), 11 deletions(-) diff --git a/configure.ac b/configure.ac index 1dc396c1..ccd2f4e6 100644 --- a/configure.ac +++ b/configure.ac @@ -114,6 +114,11 @@ PKG_CHECK_MODULES(GOBJECT, [$pkg_modules]) PKG_CHECK_MODULES(BABELTRACE, [babeltrace >= 1.0.0]) +AC_CHECK_LIB([babeltrace], [bt_iter_equals_pos], + [AC_DEFINE([HAVE_BT_ITER_EQUALS_POS],[],[Have equal function])], []) + + + LIBS="$LIBS $GTK_LIBS $GOBJECT_LIBS $GMODULE_LIBS $BABELTRACE_LIBS" PACKAGE_CFLAGS="$GTK_CFLAGS $GOBJECT_CFLAGS $GMODULE_CFLAGS -Wall -Wformat-security" diff --git a/lttv/lttv/traceset.c b/lttv/lttv/traceset.c index 8743d708..765e3cf5 100644 --- a/lttv/lttv/traceset.c +++ b/lttv/lttv/traceset.c @@ -486,7 +486,7 @@ guint lttv_traceset_get_cpuid_from_event(LttvEvent *event) if (timestamp == -1ULL) { return 0; } - const struct definition *scope = bt_ctf_get_top_level_scope(ctf_event, BT_STREAM_PACKET_CONTEXT); + const struct bt_definition *scope = bt_ctf_get_top_level_scope(ctf_event, BT_STREAM_PACKET_CONTEXT); if (bt_ctf_field_get_error()) { return 0; } @@ -698,8 +698,12 @@ int lttv_traceset_position_compare(const LttvTracesetPosition *pos1, const LttvT return -1; } - int res = bt_iter_equals_pos(pos1->bt_pos, pos2->bt_pos); - + int res = -1; +#ifdef HAVE_BT_ITER_EQUALS_POS + if(pos1->timestamp == G_MAXUINT64 || pos2->timestamp == G_MAXUINT64) { + res = bt_iter_equals_pos(pos1->bt_pos, pos2->bt_pos); + } +#endif if (res < 0) { guint64 timeStampPos1,timeStampPos2; @@ -708,16 +712,16 @@ int lttv_traceset_position_compare(const LttvTracesetPosition *pos1, const LttvT timeStampPos1 = lttv_traceset_position_get_timestamp(pos1); timeStampPos2 = lttv_traceset_position_get_timestamp(pos2); + if (timeStampPos1 == timeStampPos2) { + + cpuId1 = lttv_traceset_position_get_cpuid(pos1); + cpuId2 = lttv_traceset_position_get_cpuid(pos2); - cpuId1 = lttv_traceset_position_get_cpuid(pos1); - cpuId2 = lttv_traceset_position_get_cpuid(pos2); - - if(timeStampPos1 == timeStampPos2 && cpuId1 == cpuId2){ - return 0; - } - else{ - return 1; + if(cpuId1 == cpuId2){ + return 0; + } } + return 1; } else { return !res; -- 2.34.1