X-Git-Url: https://git.efficios.com/?a=blobdiff_plain;f=src%2Fplugins%2Flttng-utils%2Fdebug-info%2Fdebug-info.c;h=af6795965018e43351f331a1a9dbf107c150463b;hb=4175c1d52f91f7e5d66a12135ad8ec6ec736a539;hp=c994b264d009fb81b4795dd62c87c4d7103b88f4;hpb=b7cbc7991dbe94cebca2b9319da0e87af6006efb;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 c994b264..af679596 100644 --- a/src/plugins/lttng-utils/debug-info/debug-info.c +++ b/src/plugins/lttng-utils/debug-info/debug-info.c @@ -29,7 +29,7 @@ #define BT_COMP_LOG_SELF_COMP self_comp #define BT_LOG_OUTPUT_LEVEL log_level #define BT_LOG_TAG "PLUGIN/FLT.LTTNG-UTILS.DEBUG-INFO" -#include "plugins/comp-logging.h" +#include "logging/comp-logging.h" #include @@ -119,7 +119,7 @@ struct debug_info { bt_self_component *self_comp; struct debug_info_component *comp; const bt_trace *input_trace; - uint64_t destruction_listener_id; + bt_listener_id destruction_listener_id; /* * Hash table of VPIDs (pointer to int64_t) to @@ -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) { @@ -1719,14 +1746,15 @@ int init_from_params(struct debug_info_component *debug_info_component, } BT_HIDDEN -bt_component_class_init_method_status debug_info_comp_init( +bt_component_class_initialize_method_status debug_info_comp_init( bt_self_component_filter *self_comp_flt, + bt_self_component_filter_configuration *config, const bt_value *params, __attribute__((unused)) void *init_method_data) { int ret; struct debug_info_component *debug_info_comp; - bt_component_class_init_method_status status = - BT_COMPONENT_CLASS_INIT_METHOD_STATUS_OK; + bt_component_class_initialize_method_status status = + BT_COMPONENT_CLASS_INITIALIZE_METHOD_STATUS_OK; bt_self_component_add_port_status add_port_status; bt_self_component *self_comp = bt_self_component_filter_as_self_component(self_comp_flt); @@ -1751,10 +1779,10 @@ bt_component_class_init_method_status debug_info_comp_init( self_comp_flt, "in", NULL, NULL); switch (add_port_status) { case BT_SELF_COMPONENT_ADD_PORT_STATUS_ERROR: - status = BT_COMPONENT_CLASS_INIT_METHOD_STATUS_ERROR; + status = BT_COMPONENT_CLASS_INITIALIZE_METHOD_STATUS_ERROR; goto error; case BT_SELF_COMPONENT_ADD_PORT_STATUS_MEMORY_ERROR: - status = BT_COMPONENT_CLASS_INIT_METHOD_STATUS_MEMORY_ERROR; + status = BT_COMPONENT_CLASS_INITIALIZE_METHOD_STATUS_MEMORY_ERROR; goto error; default: break; @@ -1764,10 +1792,10 @@ bt_component_class_init_method_status debug_info_comp_init( self_comp_flt, "out", NULL, NULL); switch (add_port_status) { case BT_SELF_COMPONENT_ADD_PORT_STATUS_ERROR: - status = BT_COMPONENT_CLASS_INIT_METHOD_STATUS_ERROR; + status = BT_COMPONENT_CLASS_INITIALIZE_METHOD_STATUS_ERROR; goto error; case BT_SELF_COMPONENT_ADD_PORT_STATUS_MEMORY_ERROR: - status = BT_COMPONENT_CLASS_INIT_METHOD_STATUS_MEMORY_ERROR; + status = BT_COMPONENT_CLASS_INITIALIZE_METHOD_STATUS_MEMORY_ERROR; goto error; default: break; @@ -1787,8 +1815,8 @@ error: destroy_debug_info_comp(debug_info_comp); bt_self_component_set_data(self_comp, NULL); - if (status == BT_COMPONENT_CLASS_INIT_METHOD_STATUS_OK) { - status = BT_COMPONENT_CLASS_INIT_METHOD_STATUS_ERROR; + if (status == BT_COMPONENT_CLASS_INITIALIZE_METHOD_STATUS_OK) { + status = BT_COMPONENT_CLASS_INITIALIZE_METHOD_STATUS_ERROR; } end: return status; @@ -1886,6 +1914,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: @@ -1920,13 +1956,15 @@ end: } BT_HIDDEN -bt_component_class_message_iterator_init_method_status debug_info_msg_iter_init( +bt_component_class_message_iterator_initialize_method_status debug_info_msg_iter_init( bt_self_message_iterator *self_msg_iter, + bt_self_message_iterator_configuration *config, bt_self_component_filter *self_comp_flt, bt_self_component_port_output *self_port) { - bt_component_class_message_iterator_init_method_status status = - BT_COMPONENT_CLASS_MESSAGE_ITERATOR_INIT_METHOD_STATUS_OK; + bt_component_class_message_iterator_initialize_method_status status; + bt_self_component_port_input_message_iterator_create_from_message_iterator_status + msg_iter_status; struct bt_self_component_port_input *input_port = NULL; bt_self_component_port_input_message_iterator *upstream_iterator = NULL; struct debug_info_msg_iter *debug_info_msg_iter = NULL; @@ -1941,13 +1979,13 @@ bt_component_class_message_iterator_init_method_status debug_info_msg_iter_init( input_port = bt_self_component_filter_borrow_input_port_by_name( self_comp_flt, "in"); if (!input_port) { - status = BT_COMPONENT_CLASS_MESSAGE_ITERATOR_INIT_METHOD_STATUS_ERROR; + status = BT_COMPONENT_CLASS_MESSAGE_ITERATOR_INITIALIZE_METHOD_STATUS_ERROR; goto error; } debug_info_msg_iter = g_new0(struct debug_info_msg_iter, 1); if (!debug_info_msg_iter) { - status = BT_COMPONENT_CLASS_MESSAGE_ITERATOR_INIT_METHOD_STATUS_MEMORY_ERROR; + status = BT_COMPONENT_CLASS_MESSAGE_ITERATOR_INITIALIZE_METHOD_STATUS_MEMORY_ERROR; goto error; } @@ -1955,10 +1993,10 @@ bt_component_class_message_iterator_init_method_status debug_info_msg_iter_init( debug_info_msg_iter->self_comp = self_comp; /* Create an iterator on the upstream component. */ - upstream_iterator = bt_self_component_port_input_message_iterator_create( - input_port); - if (!upstream_iterator) { - status = BT_COMPONENT_CLASS_MESSAGE_ITERATOR_INIT_METHOD_STATUS_MEMORY_ERROR; + msg_iter_status = bt_self_component_port_input_message_iterator_create_from_message_iterator( + self_msg_iter, input_port, &upstream_iterator); + if (msg_iter_status != BT_SELF_COMPONENT_PORT_INPUT_MESSAGE_ITERATOR_CREATE_FROM_MESSAGE_ITERATOR_STATUS_OK) { + status = (int) msg_iter_status; goto error; } @@ -1970,7 +2008,7 @@ bt_component_class_message_iterator_init_method_status debug_info_msg_iter_init( g_direct_hash, g_direct_equal, (GDestroyNotify) NULL, (GDestroyNotify) debug_info_destroy); if (!debug_info_msg_iter->debug_info_map) { - status = BT_COMPONENT_CLASS_MESSAGE_ITERATOR_INIT_METHOD_STATUS_MEMORY_ERROR; + status = BT_COMPONENT_CLASS_MESSAGE_ITERATOR_INITIALIZE_METHOD_STATUS_MEMORY_ERROR; goto error; } @@ -1983,19 +2021,20 @@ bt_component_class_message_iterator_init_method_status debug_info_msg_iter_init( debug_info_msg_iter->ir_maps = trace_ir_maps_create(self_comp, debug_info_field_name, log_level); if (!debug_info_msg_iter->ir_maps) { - status = BT_COMPONENT_CLASS_MESSAGE_ITERATOR_INIT_METHOD_STATUS_MEMORY_ERROR; + status = BT_COMPONENT_CLASS_MESSAGE_ITERATOR_INITIALIZE_METHOD_STATUS_MEMORY_ERROR; goto error; } ret = bt_fd_cache_init(&debug_info_msg_iter->fd_cache, log_level); if (ret) { - status = BT_COMPONENT_CLASS_MESSAGE_ITERATOR_INIT_METHOD_STATUS_MEMORY_ERROR; + status = BT_COMPONENT_CLASS_MESSAGE_ITERATOR_INITIALIZE_METHOD_STATUS_MEMORY_ERROR; goto error; } bt_self_message_iterator_set_data(self_msg_iter, debug_info_msg_iter); debug_info_msg_iter->input_iterator = self_msg_iter; + status = BT_COMPONENT_CLASS_MESSAGE_ITERATOR_INITIALIZE_METHOD_STATUS_OK; goto end; error: @@ -2006,15 +2045,16 @@ end: } BT_HIDDEN -bt_bool debug_info_msg_iter_can_seek_beginning( - bt_self_message_iterator *self_msg_iter) +bt_component_class_message_iterator_can_seek_beginning_method_status +debug_info_msg_iter_can_seek_beginning( + bt_self_message_iterator *self_msg_iter, bt_bool *can_seek) { struct debug_info_msg_iter *debug_info_msg_iter = bt_self_message_iterator_get_data(self_msg_iter); BT_ASSERT(debug_info_msg_iter); - return bt_self_component_port_input_message_iterator_can_seek_beginning( - debug_info_msg_iter->msg_iter); + return (int) bt_self_component_port_input_message_iterator_can_seek_beginning( + debug_info_msg_iter->msg_iter, can_seek); } BT_HIDDEN