X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;f=src%2Fplugins%2Flttng-utils%2Fdebug-info%2Fdebug-info.c;h=10e5a7de6f710698009bb94925c0f4c75ef38d6c;hb=5084732e40a7925d22f741e4ed08f19d36078fbe;hp=ef76225beec6a198264001c92517a4e41ac620cf;hpb=b80991f68094e8e2ed3c9d5f69db442a663d1511;p=babeltrace.git diff --git a/src/plugins/lttng-utils/debug-info/debug-info.c b/src/plugins/lttng-utils/debug-info/debug-info.c index ef76225b..10e5a7de 100644 --- a/src/plugins/lttng-utils/debug-info/debug-info.c +++ b/src/plugins/lttng-utils/debug-info/debug-info.c @@ -363,7 +363,7 @@ static inline void event_get_common_context_signed_integer_field_value( const bt_event *event, const char *field_name, int64_t *value) { - *value = bt_field_signed_integer_get_value( + *value = bt_field_integer_signed_get_value( event_borrow_common_context_field(event, field_name)); } @@ -417,7 +417,7 @@ int event_get_payload_build_id_value(const bt_event *event, bt_field_array_borrow_element_field_by_index_const( build_id_field, i); - build_id[i] = bt_field_unsigned_integer_get_value(curr_field); + build_id[i] = bt_field_integer_unsigned_get_value(curr_field); } return ret; @@ -427,7 +427,7 @@ static void event_get_payload_unsigned_integer_field_value(const bt_event *event, const char *field_name, uint64_t *value) { - *value = bt_field_unsigned_integer_get_value( + *value = bt_field_integer_unsigned_get_value( event_borrow_payload_field(event, field_name)); } @@ -443,7 +443,7 @@ static inline bool event_has_payload_field(const bt_event *event, const char *field_name) { - return event_borrow_payload_field(event, field_name) != NULL; + return event_borrow_payload_field(event, field_name); } static @@ -1195,8 +1195,8 @@ void fill_debug_info_event_if_needed(struct debug_info_msg_iter *debug_it, ip_field = bt_field_structure_borrow_member_field_by_name_const( out_common_ctx_field, IP_FIELD_NAME); - vpid = bt_field_signed_integer_get_value(vpid_field); - ip = bt_field_unsigned_integer_get_value(ip_field); + vpid = bt_field_integer_signed_get_value(vpid_field); + ip = bt_field_integer_unsigned_get_value(ip_field); /* * Borrow the debug_info structure needed for the source @@ -1261,8 +1261,10 @@ bt_message *handle_event_message(struct debug_info_msg_iter *debug_it, const bt_clock_snapshot *cs; const bt_clock_class *default_cc; const bt_packet *in_packet; + const bt_stream *in_stream; + const bt_stream *out_stream; bt_event_class *out_event_class; - bt_packet *out_packet; + bt_packet *out_packet = NULL; bt_event *out_event; bt_logging_level log_level = debug_it->log_level; bt_self_component *self_comp = debug_it->self_comp; @@ -1285,10 +1287,19 @@ bt_message *handle_event_message(struct debug_info_msg_iter *debug_it, } BT_ASSERT(out_event_class); + /* Borrow the input stream. */ + in_stream = bt_event_borrow_stream_const(in_event); + BT_ASSERT(in_stream); + out_stream = trace_ir_mapping_borrow_mapped_stream(debug_it->ir_maps, + in_stream); + BT_ASSERT(in_stream); + /* Borrow the input and output packets. */ in_packet = bt_event_borrow_packet_const(in_event); - out_packet = trace_ir_mapping_borrow_mapped_packet(debug_it->ir_maps, - in_packet); + if (in_packet) { + out_packet = trace_ir_mapping_borrow_mapped_packet( + debug_it->ir_maps, in_packet); + } default_cc = bt_stream_class_borrow_default_clock_class_const( bt_event_class_borrow_stream_class_const(in_event_class)); @@ -1298,13 +1309,29 @@ bt_message *handle_event_message(struct debug_info_msg_iter *debug_it, in_message); /* Create an output event message. */ - out_message = bt_message_event_create_with_default_clock_snapshot( + if (out_packet) { + out_message = + bt_message_event_create_with_packet_and_default_clock_snapshot( debug_it->input_iterator, out_event_class, out_packet, bt_clock_snapshot_get_value(cs)); + } else { + out_message = + bt_message_event_create_with_default_clock_snapshot( + debug_it->input_iterator, + out_event_class, out_stream, + bt_clock_snapshot_get_value(cs)); + } } else { - out_message = bt_message_event_create(debug_it->input_iterator, - out_event_class, out_packet); + if (out_packet) { + out_message = bt_message_event_create_with_packet( + debug_it->input_iterator, out_event_class, + out_packet); + } else { + out_message = bt_message_event_create( + debug_it->input_iterator, out_event_class, + out_stream); + } } if (!out_message) { @@ -1502,110 +1529,6 @@ bt_message *handle_msg_iterator_inactivity(struct debug_info_msg_iter *debug_it, return (bt_message*) in_message; } -static -bt_message *handle_stream_act_begin_message(struct debug_info_msg_iter *debug_it, - const bt_message *in_message) -{ - const bt_clock_snapshot *cs; - const bt_clock_class *default_cc; - bt_message *out_message = NULL; - bt_stream *out_stream; - uint64_t cs_value; - bt_message_stream_activity_clock_snapshot_state cs_state; - bt_logging_level log_level = debug_it->log_level; - bt_self_component *self_comp = debug_it->self_comp; - - const bt_stream *in_stream = - bt_message_stream_activity_beginning_borrow_stream_const( - in_message); - BT_ASSERT(in_stream); - - out_stream = trace_ir_mapping_borrow_mapped_stream(debug_it->ir_maps, - in_stream); - BT_ASSERT(out_stream); - - out_message = bt_message_stream_activity_beginning_create( - debug_it->input_iterator, out_stream); - if (!out_message) { - BT_COMP_LOGE("Error creating output stream activity beginning " - "message: out-s-addr=%p", out_stream); - goto error; - } - - default_cc = bt_stream_class_borrow_default_clock_class_const( - bt_stream_borrow_class_const(in_stream)); - if (default_cc) { - /* Borrow clock snapshot. */ - cs_state = - bt_message_stream_activity_beginning_borrow_default_clock_snapshot_const( - in_message, &cs); - - if (cs_state == BT_MESSAGE_STREAM_ACTIVITY_CLOCK_SNAPSHOT_STATE_KNOWN) { - cs_value = bt_clock_snapshot_get_value(cs); - bt_message_stream_activity_beginning_set_default_clock_snapshot( - out_message, cs_value); - } else { - bt_message_stream_activity_beginning_set_default_clock_snapshot_state( - out_message, cs_state); - } - } - -error: - return out_message; -} - -static -bt_message *handle_stream_act_end_message(struct debug_info_msg_iter *debug_it, - const bt_message *in_message) -{ - const bt_clock_snapshot *cs; - const bt_clock_class *default_cc; - const bt_stream *in_stream; - bt_message *out_message; - bt_stream *out_stream; - uint64_t cs_value; - bt_message_stream_activity_clock_snapshot_state cs_state; - bt_logging_level log_level = debug_it->log_level; - bt_self_component *self_comp = debug_it->self_comp; - - in_stream = bt_message_stream_activity_end_borrow_stream_const( - in_message); - BT_ASSERT(in_stream); - - out_stream = trace_ir_mapping_borrow_mapped_stream(debug_it->ir_maps, - in_stream); - BT_ASSERT(out_stream); - - out_message = bt_message_stream_activity_end_create( - debug_it->input_iterator, out_stream); - if (!out_message) { - BT_COMP_LOGE("Error creating output stream activity end message: " - "out-s-addr=%p", out_stream); - goto error; - } - - default_cc = bt_stream_class_borrow_default_clock_class_const( - bt_stream_borrow_class_const(in_stream)); - - if (default_cc) { - cs_state = - bt_message_stream_activity_end_borrow_default_clock_snapshot_const( - in_message, &cs); - - if (cs_state == BT_MESSAGE_STREAM_ACTIVITY_CLOCK_SNAPSHOT_STATE_KNOWN ) { - cs_value = bt_clock_snapshot_get_value(cs); - bt_message_stream_activity_end_set_default_clock_snapshot( - out_message, cs_value); - } else { - bt_message_stream_activity_end_set_default_clock_snapshot_state( - out_message, cs_state); - } - } - -error: - return out_message; -} - static bt_message *handle_discarded_events_message(struct debug_info_msg_iter *debug_it, const bt_message *in_message) @@ -1760,14 +1683,6 @@ const bt_message *handle_message(struct debug_info_msg_iter *debug_it, out_message = handle_msg_iterator_inactivity(debug_it, in_message); break; - case BT_MESSAGE_TYPE_STREAM_ACTIVITY_BEGINNING: - out_message = handle_stream_act_begin_message(debug_it, - in_message); - break; - case BT_MESSAGE_TYPE_STREAM_ACTIVITY_END: - out_message = handle_stream_act_end_message(debug_it, - in_message); - break; case BT_MESSAGE_TYPE_DISCARDED_EVENTS: out_message = handle_discarded_events_message(debug_it, in_message); @@ -1998,6 +1913,14 @@ handle_msg_error: bt_message_put_ref(msgs[i]); } + /* + * Drop references of all the input messages not dropped before the + * failure. + */ + for (i = curr_msg_idx; i < *count; i++) { + bt_message_put_ref(input_msgs[i]); + } + status = BT_COMPONENT_CLASS_MESSAGE_ITERATOR_NEXT_METHOD_STATUS_MEMORY_ERROR; end: