lib: make packets and packet messages optional, disabled by default
[babeltrace.git] / src / plugins / lttng-utils / debug-info / debug-info.c
index 80f96e7b5e5f1dc758a28849013585533d03cd25..75e1a6fe2b0381ebd5fb8c6903482ff9c58d6da4 100644 (file)
@@ -588,6 +588,7 @@ void debug_info_destroy(struct debug_info *debug_info)
                        debug_info->destruction_listener_id);
        if (remove_listener_status != BT_TRACE_REMOVE_LISTENER_STATUS_OK) {
                BT_COMP_LOGE("Trace destruction listener removal failed.");
+               bt_current_thread_clear_error();
        }
 
        g_free(debug_info);
@@ -890,13 +891,17 @@ void handle_event_statedump(struct debug_info_msg_iter *debug_it,
 
        debug_info = g_hash_table_lookup(debug_it->debug_info_map, trace);
        if (!debug_info) {
+               bt_trace_add_listener_status add_listener_status;
+
                debug_info = debug_info_create(debug_it->debug_info_component,
                                trace, &debug_it->fd_cache);
                g_hash_table_insert(debug_it->debug_info_map, (gpointer) trace,
                                debug_info);
-               bt_trace_add_destruction_listener(trace,
-                               trace_debug_info_remove_func, debug_it,
+               add_listener_status = bt_trace_add_destruction_listener(
+                               trace, trace_debug_info_remove_func,
+                               debug_it,
                                &debug_info->destruction_listener_id);
+               BT_ASSERT(add_listener_status == BT_TRACE_ADD_LISTENER_STATUS_OK);
        }
 
        q_event_name = g_quark_try_string(event_name);
@@ -968,6 +973,7 @@ void fill_debug_info_bin_field(struct debug_info_source *dbg_info_src,
                        BT_COMP_LOGE("Cannot set path component of \"bin\" "
                                "curr_field field's value: str-fc-addr=%p",
                                curr_field);
+                       bt_current_thread_clear_error();
                }
 
                append_status = bt_field_string_append(curr_field,
@@ -976,12 +982,14 @@ void fill_debug_info_bin_field(struct debug_info_source *dbg_info_src,
                        BT_COMP_LOGE("Cannot set bin location component of \"bin\" "
                                "curr_field field's value: str-fc-addr=%p",
                                curr_field);
+                       bt_current_thread_clear_error();
                }
        } else {
                set_status = bt_field_string_set_value(curr_field, "");
                if (set_status != BT_FIELD_STRING_SET_VALUE_STATUS_OK) {
                        BT_COMP_LOGE("Cannot set \"bin\" curr_field field's value: "
                                "str-fc-addr=%p", curr_field);
+                       bt_current_thread_clear_error();
                }
        }
 }
@@ -1004,6 +1012,7 @@ void fill_debug_info_func_field(struct debug_info_source *dbg_info_src,
        if (status != BT_FIELD_STRING_SET_VALUE_STATUS_OK) {
                BT_COMP_LOGE("Cannot set \"func\" curr_field field's value: "
                        "str-fc-addr=%p", curr_field);
+               bt_current_thread_clear_error();
        }
 }
 
@@ -1031,6 +1040,7 @@ void fill_debug_info_src_field(struct debug_info_source *dbg_info_src,
                        BT_COMP_LOGE("Cannot set path component of \"src\" "
                                "curr_field field's value: str-fc-addr=%p",
                                curr_field);
+                       bt_current_thread_clear_error();
                }
 
                append_status = bt_field_string_append(curr_field, ":");
@@ -1038,6 +1048,7 @@ void fill_debug_info_src_field(struct debug_info_source *dbg_info_src,
                        BT_COMP_LOGE("Cannot set colon component of \"src\" "
                                "curr_field field's value: str-fc-addr=%p",
                                curr_field);
+                       bt_current_thread_clear_error();
                }
 
                append_status = bt_field_string_append(curr_field,
@@ -1046,12 +1057,14 @@ void fill_debug_info_src_field(struct debug_info_source *dbg_info_src,
                        BT_COMP_LOGE("Cannot set line number component of \"src\" "
                                "curr_field field's value: str-fc-addr=%p",
                                curr_field);
+                       bt_current_thread_clear_error();
                }
        } else {
                set_status = bt_field_string_set_value(curr_field, "");
                if (set_status != BT_FIELD_STRING_SET_VALUE_STATUS_OK) {
                        BT_COMP_LOGE("Cannot set \"src\" curr_field field's value: "
                                "str-fc-addr=%p", curr_field);
+                       bt_current_thread_clear_error();
                }
        }
 }
@@ -1084,18 +1097,21 @@ void fill_debug_info_field_empty(bt_field *debug_info_field,
        if (status != BT_FIELD_STRING_SET_VALUE_STATUS_OK) {
                BT_COMP_LOGE("Cannot set \"bin\" bin_field field's value: "
                        "str-fc-addr=%p", bin_field);
+               bt_current_thread_clear_error();
        }
 
        status = bt_field_string_set_value(func_field, "");
        if (status != BT_FIELD_STRING_SET_VALUE_STATUS_OK) {
                BT_COMP_LOGE("Cannot set \"func\" func_field field's value: "
                        "str-fc-addr=%p", func_field);
+               bt_current_thread_clear_error();
        }
 
        status = bt_field_string_set_value(src_field, "");
        if (status != BT_FIELD_STRING_SET_VALUE_STATUS_OK) {
                BT_COMP_LOGE("Cannot set \"src\" src_field field's value: "
                        "str-fc-addr=%p", src_field);
+               bt_current_thread_clear_error();
        }
 }
 static
@@ -1245,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;
@@ -1269,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));
@@ -1282,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) {
@@ -1366,11 +1409,13 @@ bt_message *handle_stream_end_message(struct debug_info_msg_iter *debug_it,
        if (!out_message) {
                BT_COMP_LOGE("Error creating output stream end message: out-s-addr=%p",
                                out_stream);
+               goto end;
        }
 
        /* Remove stream from trace mapping hashtable. */
        trace_ir_mapping_remove_mapped_stream(debug_it->ir_maps, in_stream);
 
+end:
        return out_message;
 }
 
@@ -1462,11 +1507,13 @@ bt_message *handle_packet_end_message(struct debug_info_msg_iter *debug_it,
        if (!out_message) {
                BT_COMP_LOGE("Error creating output packet end message: "
                        "out-p-addr=%p", out_packet);
+               goto end;
        }
 
        /* Remove packet from data mapping hashtable. */
        trace_ir_mapping_remove_mapped_packet(debug_it->ir_maps, in_packet);
 
+end:
        return out_message;
 }
 
@@ -1482,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)
@@ -1740,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);
This page took 0.028441 seconds and 4 git commands to generate.