From: Philippe Proulx Date: Sat, 20 Jul 2019 22:18:40 +0000 (-0400) Subject: lib: logging: add `%!R` conv. specifier for integer range set and use it X-Git-Url: http://git.efficios.com/?p=babeltrace.git;a=commitdiff_plain;h=6769570a7eb51bfa5c8d1aa3573e636eda47b131 lib: logging: add `%!R` conv. specifier for integer range set and use it This patch also renames "range set" to "integer range set" in logging and precondition assertion messages. Signed-off-by: Philippe Proulx Change-Id: I59aaf541d956d84fee5cad22393b230635558877 Reviewed-on: https://review.lttng.org/c/babeltrace/+/1730 Tested-by: jenkins --- diff --git a/CONTRIBUTING.adoc b/CONTRIBUTING.adoc index dcaa2d0a..81e964f0 100644 --- a/CONTRIBUTING.adoc +++ b/CONTRIBUTING.adoc @@ -631,59 +631,63 @@ The available format specifiers are: |`F` |Trace IR field class -|`+struct bt_field_class *+` +|`+const struct bt_field_class *+` |`f` |Trace IR field -|`+struct bt_field *+` +|`+const struct bt_field *+` |`P` |Trace IR field path -|`+struct bt_field_path *+` +|`+const struct bt_field_path *+` |`E` |Trace IR event class -|`+struct bt_event_class *+` +|`+const struct bt_event_class *+` |`e` |Trace IR event -|`+struct bt_event *+` +|`+const struct bt_event *+` |`S` |Trace IR stream class. -|`+struct bt_stream_class *+` +|`+const struct bt_stream_class *+` |`s` |Trace IR stream -|`+struct bt_stream *+` +|`+const struct bt_stream *+` |`a` |Trace IR packet -|`+struct bt_packet *+` +|`+const struct bt_packet *+` |`T` |Trace IR trace class -|`+struct bt_trace_class *+` +|`+const struct bt_trace_class *+` |`t` |Trace IR trace -|`+struct bt_trace *+` +|`+const struct bt_trace *+` |`K` |Trace IR clock class -|`+struct bt_clock_class *+` +|`+const struct bt_clock_class *+` |`k` |Trace IR clock snapshot -|`+struct bt_clock_snapshot *+` +|`+const struct bt_clock_snapshot *+` |`v` |Value object -|`+struct bt_value *+` +|`+const struct bt_value *+` + +|`R` +|Integer range set +|`const struct bt_integer_range_set *` |`n` |Message -|`+struct bt_message *+` +|`+const struct bt_message *+` |`i` |Message iterator @@ -695,35 +699,35 @@ The available format specifiers are: |`c` |Component -|`+struct bt_component *+` +|`+const struct bt_component *+` |`p` |Port -|`+struct bt_port *+` +|`+const struct bt_port *+` |`x` |Connection -|`+struct bt_connection *+` +|`+const struct bt_connection *+` |`g` |Graph -|`+struct bt_graph *+` +|`+const struct bt_graph *+` |`l` |Plugin -|`const struct bt_plugin *` +|`+const struct bt_plugin *+` |`r` |Error cause -|`const struct bt_error_cause *` +|`+const struct bt_error_cause *+` |`o` |Object pool -|`+struct bt_object_pool *+` +|`+const struct bt_object_pool *+` |`O` |Object -|`+struct bt_object *+` +|`+const struct bt_object *+` |=== Conversion specifier examples: diff --git a/src/lib/integer-range-set.c b/src/lib/integer-range-set.c index 3b232697..35483c93 100644 --- a/src/lib/integer-range-set.c +++ b/src/lib/integer-range-set.c @@ -29,35 +29,39 @@ #include "func-status.h" #include "integer-range-set.h" -uint64_t bt_integer_range_unsigned_get_lower(const struct bt_integer_range_unsigned *u_range) +uint64_t bt_integer_range_unsigned_get_lower( + const struct bt_integer_range_unsigned *u_range) { const struct bt_integer_range *range = (const void *) u_range; - BT_ASSERT_PRE_DEV_NON_NULL(range, "Range"); + BT_ASSERT_PRE_DEV_NON_NULL(range, "Integer range"); return range->lower.u; } -uint64_t bt_integer_range_unsigned_get_upper(const struct bt_integer_range_unsigned *u_range) +uint64_t bt_integer_range_unsigned_get_upper( + const struct bt_integer_range_unsigned *u_range) { const struct bt_integer_range *range = (const void *) u_range; - BT_ASSERT_PRE_DEV_NON_NULL(range, "Range"); + BT_ASSERT_PRE_DEV_NON_NULL(range, "Integer range"); return range->upper.u; } -int64_t bt_integer_range_signed_get_lower(const struct bt_integer_range_signed *i_range) +int64_t bt_integer_range_signed_get_lower( + const struct bt_integer_range_signed *i_range) { const struct bt_integer_range *range = (const void *) i_range; - BT_ASSERT_PRE_DEV_NON_NULL(range, "Range"); + BT_ASSERT_PRE_DEV_NON_NULL(range, "Integer range"); return range->lower.i; } -int64_t bt_integer_range_signed_get_upper(const struct bt_integer_range_signed *i_range) +int64_t bt_integer_range_signed_get_upper( + const struct bt_integer_range_signed *i_range) { const struct bt_integer_range *range = (const void *) i_range; - BT_ASSERT_PRE_DEV_NON_NULL(range, "Range"); + BT_ASSERT_PRE_DEV_NON_NULL(range, "Integer range"); return range->upper.i; } @@ -73,8 +77,8 @@ bt_bool bt_integer_range_unsigned_compare( const struct bt_integer_range_unsigned *range_a, const struct bt_integer_range_unsigned *range_b) { - BT_ASSERT_PRE_DEV_NON_NULL(range_a, "Range A"); - BT_ASSERT_PRE_DEV_NON_NULL(range_b, "Range B"); + BT_ASSERT_PRE_DEV_NON_NULL(range_a, "Integer range A"); + BT_ASSERT_PRE_DEV_NON_NULL(range_b, "Integer range B"); return (bt_bool) compare_ranges((const void *) range_a, (const void *) range_b); } @@ -83,8 +87,8 @@ bt_bool bt_integer_range_signed_compare( const struct bt_integer_range_signed *range_a, const struct bt_integer_range_signed *range_b) { - BT_ASSERT_PRE_DEV_NON_NULL(range_a, "Range A"); - BT_ASSERT_PRE_DEV_NON_NULL(range_b, "Range B"); + BT_ASSERT_PRE_DEV_NON_NULL(range_a, "Integer range A"); + BT_ASSERT_PRE_DEV_NON_NULL(range_b, "Integer range B"); return (bt_bool) compare_ranges((const void *) range_a, (const void *) range_b); } @@ -92,28 +96,35 @@ bt_bool bt_integer_range_signed_compare( uint64_t bt_integer_range_set_get_range_count( const bt_integer_range_set *range_set) { - BT_ASSERT_PRE_DEV_NON_NULL(range_set, "Range set"); + BT_ASSERT_PRE_DEV_NON_NULL(range_set, "Integer range set"); return (uint64_t) range_set->ranges->len; } -const struct bt_integer_range_unsigned *bt_integer_range_set_unsigned_borrow_range_by_index_const( - const bt_integer_range_set_unsigned *u_range_set, uint64_t index) +const struct bt_integer_range_unsigned * +bt_integer_range_set_unsigned_borrow_range_by_index_const( + const bt_integer_range_set_unsigned *u_range_set, + uint64_t index) { - const struct bt_integer_range_set *range_set = (const void *) u_range_set; + const struct bt_integer_range_set *range_set = + (const void *) u_range_set; - BT_ASSERT_PRE_DEV_NON_NULL(range_set, "Range set"); + BT_ASSERT_PRE_DEV_NON_NULL(range_set, "Integer range set"); BT_ASSERT_PRE_DEV_VALID_INDEX(index, range_set->ranges->len); - return (const void *) BT_INTEGER_RANGE_SET_RANGE_AT_INDEX(range_set, index); + return (const void *) BT_INTEGER_RANGE_SET_RANGE_AT_INDEX(range_set, + index); } -const struct bt_integer_range_signed *bt_integer_range_set_signed_borrow_range_by_index_const( +const struct bt_integer_range_signed * +bt_integer_range_set_signed_borrow_range_by_index_const( const bt_integer_range_set_signed *i_range_set, uint64_t index) { - const struct bt_integer_range_set *range_set = (const void *) i_range_set; + const struct bt_integer_range_set *range_set = + (const void *) i_range_set; - BT_ASSERT_PRE_DEV_NON_NULL(range_set, "Range set"); + BT_ASSERT_PRE_DEV_NON_NULL(range_set, "Integer range set"); BT_ASSERT_PRE_DEV_VALID_INDEX(index, range_set->ranges->len); - return (const void *) BT_INTEGER_RANGE_SET_RANGE_AT_INDEX(range_set, index); + return (const void *) BT_INTEGER_RANGE_SET_RANGE_AT_INDEX(range_set, + index); } static @@ -121,6 +132,8 @@ void destroy_range_set(struct bt_object *obj) { struct bt_integer_range_set *range_set = (void *) obj; + BT_LIB_LOGD("Destroying integer range set: %!+R", range_set); + if (range_set->ranges) { g_array_free(range_set->ranges, TRUE); range_set->ranges = NULL; @@ -132,10 +145,14 @@ void destroy_range_set(struct bt_object *obj) static struct bt_integer_range_set *create_range_set(void) { - struct bt_integer_range_set *range_set = g_new0(struct bt_integer_range_set, 1); + struct bt_integer_range_set *range_set; + + BT_LOGD_STR("Creating empty integer range set."); + range_set = g_new0(struct bt_integer_range_set, 1); if (!range_set) { - BT_LIB_LOGE_APPEND_CAUSE("Failed to allocate one range set."); + BT_LIB_LOGE_APPEND_CAUSE( + "Failed to allocate one integer range set."); goto error; } @@ -144,10 +161,11 @@ struct bt_integer_range_set *create_range_set(void) sizeof(struct bt_integer_range)); if (!range_set->ranges) { BT_LIB_LOGE_APPEND_CAUSE( - "Failed to allocate range set's range array."); + "Failed to allocate integer range set's range array."); goto error; } + BT_LOGD_STR("Created empty integer range set."); goto end; error: @@ -175,16 +193,17 @@ void add_range_to_range_set(struct bt_integer_range_set *range_set, .upper.u = u_upper, }; - BT_ASSERT_PRE_NON_NULL(range_set, "Range set"); - BT_ASSERT_PRE_DEV_HOT(range_set, "Range set", ": addr=%p", range_set); + BT_ASSERT_PRE_NON_NULL(range_set, "Integer range set"); + BT_ASSERT_PRE_DEV_HOT(range_set, "Integer range set", ": %!+R", + range_set); g_array_append_val(range_set->ranges, range); - BT_LIB_LOGD("Added range to range set: " - "range-set-addr=%p, lower-unsigned=%" PRIu64 ", " - "upper-unsigned=%" PRIu64, - range_set, u_lower, u_upper); + BT_LIB_LOGD("Added integer range to integer range set: " + "%![range-set-]+R, lower-unsigned=%" PRIu64 ", " + "upper-unsigned=%" PRIu64, range_set, u_lower, u_upper); } -enum bt_integer_range_set_add_range_status bt_integer_range_set_unsigned_add_range( +enum bt_integer_range_set_add_range_status +bt_integer_range_set_unsigned_add_range( struct bt_integer_range_set_unsigned *range_set, uint64_t lower, uint64_t upper) { @@ -195,7 +214,8 @@ enum bt_integer_range_set_add_range_status bt_integer_range_set_unsigned_add_ran return BT_FUNC_STATUS_OK; } -enum bt_integer_range_set_add_range_status bt_integer_range_set_signed_add_range( +enum bt_integer_range_set_add_range_status +bt_integer_range_set_signed_add_range( struct bt_integer_range_set_signed *range_set, int64_t lower, int64_t upper) { @@ -211,12 +231,13 @@ BT_HIDDEN void _bt_integer_range_set_freeze(const struct bt_integer_range_set *range_set) { BT_ASSERT(range_set); - BT_LIB_LOGD("Freezing range set: addr=%p", range_set); + BT_LIB_LOGD("Freezing integer range set: %!+R", range_set); ((struct bt_integer_range_set *) range_set)->frozen = true; } BT_HIDDEN -bool bt_integer_range_set_unsigned_has_overlaps(const struct bt_integer_range_set *range_set) +bool bt_integer_range_set_unsigned_has_overlaps( + const struct bt_integer_range_set *range_set) { uint64_t i, j; bool has_overlap = false; @@ -229,7 +250,8 @@ bool bt_integer_range_set_unsigned_has_overlaps(const struct bt_integer_range_se for (j = 0; j < range_set->ranges->len; j++) { const struct bt_integer_range *range_j = - BT_INTEGER_RANGE_SET_RANGE_AT_INDEX(range_set, j); + BT_INTEGER_RANGE_SET_RANGE_AT_INDEX( + range_set, j); if (i == j) { continue; @@ -248,7 +270,8 @@ end: } BT_HIDDEN -bool bt_integer_range_set_signed_has_overlaps(const struct bt_integer_range_set *range_set) +bool bt_integer_range_set_signed_has_overlaps( + const struct bt_integer_range_set *range_set) { uint64_t i, j; bool has_overlap = false; @@ -261,7 +284,8 @@ bool bt_integer_range_set_signed_has_overlaps(const struct bt_integer_range_set for (j = 0; j < range_set->ranges->len; j++) { const struct bt_integer_range *range_j = - BT_INTEGER_RANGE_SET_RANGE_AT_INDEX(range_set, j); + BT_INTEGER_RANGE_SET_RANGE_AT_INDEX( + range_set, j); if (i == j) { continue; @@ -361,12 +385,14 @@ void bt_integer_range_set_unsigned_put_ref( bt_object_put_ref(range_set); } -void bt_integer_range_set_signed_get_ref(const struct bt_integer_range_set_signed *range_set) +void bt_integer_range_set_signed_get_ref( + const struct bt_integer_range_set_signed *range_set) { bt_object_get_ref(range_set); } -void bt_integer_range_set_signed_put_ref(const struct bt_integer_range_set_signed *range_set) +void bt_integer_range_set_signed_put_ref( + const struct bt_integer_range_set_signed *range_set) { bt_object_put_ref(range_set); } diff --git a/src/lib/lib-logging.c b/src/lib/lib-logging.c index f36e3390..33f9d2f5 100644 --- a/src/lib/lib-logging.c +++ b/src/lib/lib-logging.c @@ -39,6 +39,7 @@ #include "assert-pre.h" #include "assert-post.h" #include "value.h" +#include "integer-range-set.h" #include "object-pool.h" #include "graph/component-class.h" #include "graph/component-class-sink-colander.h" @@ -871,6 +872,19 @@ static inline void format_value(char **buf_ch, bool extended, } } +static inline void format_integer_range_set(char **buf_ch, bool extended, + const char *prefix, + const struct bt_integer_range_set *range_set) +{ + BUF_APPEND(", %srange-count=%u", PRFIELD(range_set->ranges->len)); + + if (!extended) { + return; + } + + BUF_APPEND(", %sis-frozen=%d", PRFIELD(range_set->frozen)); +} + static inline void format_message(char **buf_ch, bool extended, const char *prefix, const struct bt_message *msg) { @@ -1405,6 +1419,9 @@ static inline void handle_conversion_specifier_bt(void *priv_data, case 'v': format_value(buf_ch, extended, prefix, obj); break; + case 'R': + format_integer_range_set(buf_ch, extended, prefix, obj); + break; case 'n': format_message(buf_ch, extended, prefix, obj); break; diff --git a/src/lib/trace-ir/field-class.c b/src/lib/trace-ir/field-class.c index f1dd2395..ffb972f4 100644 --- a/src/lib/trace-ir/field-class.c +++ b/src/lib/trace-ir/field-class.c @@ -512,7 +512,7 @@ add_mapping_to_enumeration_field_class(struct bt_field_class *fc, BT_ASSERT(fc); BT_ASSERT_PRE_NON_NULL(label, "Label"); - BT_ASSERT_PRE_NON_NULL(range_set, "Range set"); + BT_ASSERT_PRE_NON_NULL(range_set, "Integer range set"); BT_ASSERT_PRE(!enumeration_field_class_has_mapping_with_label( enum_fc, label), "Duplicate mapping name in enumeration field class: " @@ -1226,10 +1226,10 @@ int append_option_to_variant_with_selector_field_class( BT_ASSERT_PRE_NON_NULL(fc, "Field class"); BT_ASSERT_PRE_NON_NULL(name, "Name"); BT_ASSERT_PRE_NON_NULL(option_fc, "Option field class"); - BT_ASSERT_PRE_NON_NULL(range_set, "Range set"); + BT_ASSERT_PRE_NON_NULL(range_set, "Integer range set"); BT_ASSERT_PRE_FC_HAS_ID(fc, expected_type, "Field class"); BT_ASSERT_PRE(range_set->ranges->len > 0, - "Range set is empty: addr=%p", range_set); + "Integer range set is empty: %!+R", range_set); status = ranges_overlap(var_fc->common.common.named_fcs, range_set, expected_type == BT_FIELD_CLASS_TYPE_VARIANT_WITH_SIGNED_SELECTOR, &has_overlap); @@ -1239,8 +1239,8 @@ int append_option_to_variant_with_selector_field_class( } BT_ASSERT_PRE(!has_overlap, - "Range set's ranges and existing ranges have an overlap: " - "addr=%p", range_set); + "Integer range set's ranges and existing ranges have an overlap: " + "%!+R", range_set); opt = create_variant_with_selector_option(name, option_fc, range_set); if (!opt) { /* create_variant_with_selector_option() logs errors */