X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;f=plugins%2Fctf%2Fcommon%2Fnotif-iter%2Fnotif-iter.c;h=e6b4f8b77931a1256372c78fcc87294b0fc7aa84;hb=40f4ba76dd6f9508ca51b6220eaed57632281a07;hp=8fa8877bee77ab7acf1ce03ffba1547e22c99c95;hpb=65300d60e4b4f167e5fc8f584677757ce09a3844;p=babeltrace.git diff --git a/plugins/ctf/common/notif-iter/notif-iter.c b/plugins/ctf/common/notif-iter/notif-iter.c index 8fa8877b..e6b4f8b7 100644 --- a/plugins/ctf/common/notif-iter/notif-iter.c +++ b/plugins/ctf/common/notif-iter/notif-iter.c @@ -103,7 +103,7 @@ struct bt_notif_iter { struct stack *stack; /* Current notification iterator to create notifications (weak) */ - struct bt_private_connection_private_notification_iterator *notif_iter; + struct bt_self_notification_iterator *notif_iter; /* * Current dynamic scope field pointer. @@ -145,7 +145,7 @@ struct bt_notif_iter { struct bt_event *event; /* Current event notification (NULL if not created yet) */ - struct bt_notification *event_notif; + struct bt_private_notification *event_notif; /* Database of current dynamic scopes */ struct { @@ -681,8 +681,9 @@ enum bt_notif_iter_status read_packet_header_begin_state( * 3. We need the packet header field's content to know * the ID of the stream class to select. */ - notit->packet_header_field = bt_packet_header_field_create( - notit->meta.tc->ir_tc); + notit->packet_header_field = + bt_packet_header_field_create( + notit->meta.tc->ir_tc); if (!notit->packet_header_field) { BT_LOGE_STR("Cannot create packet header field wrapper from trace."); ret = BT_NOTIF_ITER_STATUS_ERROR; @@ -690,7 +691,8 @@ enum bt_notif_iter_status read_packet_header_begin_state( } notit->dscopes.trace_packet_header = - bt_packet_header_field_borrow_field(notit->packet_header_field); + bt_packet_header_field_borrow_field( + notit->packet_header_field); BT_ASSERT(notit->dscopes.trace_packet_header); } @@ -803,9 +805,10 @@ enum bt_notif_iter_status set_current_stream(struct bt_notif_iter *notit) "stream-class-addr=%p, stream-class-id=%" PRId64, notit, notit->meta.sc, notit->meta.sc->id); - stream = bt_object_get_ref(notit->medium.medops.borrow_stream( + stream = notit->medium.medops.borrow_stream( notit->meta.sc->ir_sc, notit->cur_data_stream_id, - notit->medium.data)); + notit->medium.data); + bt_object_get_ref(stream); BT_LOGV("User function returned: stream-addr=%p", stream); if (!stream) { BT_LOGW_STR("User function failed to return a stream object " @@ -916,7 +919,8 @@ enum bt_notif_iter_status read_packet_context_begin_state( * (bt_notif_iter_borrow_packet_header_context_fields()). */ notit->packet_context_field = - bt_packet_context_field_create(notit->meta.sc->ir_sc); + bt_packet_context_field_create( + notit->meta.sc->ir_sc); if (!notit->packet_context_field) { BT_LOGE_STR("Cannot create packet context field wrapper from stream class."); status = BT_NOTIF_ITER_STATUS_ERROR; @@ -924,7 +928,8 @@ enum bt_notif_iter_status read_packet_context_begin_state( } notit->dscopes.stream_packet_context = - bt_packet_context_field_borrow_field(notit->packet_context_field); + bt_packet_context_field_borrow_field( + notit->packet_context_field); BT_ASSERT(notit->dscopes.stream_packet_context); } @@ -1091,8 +1096,9 @@ enum bt_notif_iter_status read_event_header_begin_state( if (event_header_fc->in_ir) { BT_ASSERT(!notit->event_header_field); - notit->event_header_field = bt_event_header_field_create( - notit->meta.sc->ir_sc); + notit->event_header_field = + bt_event_header_field_create( + notit->meta.sc->ir_sc); if (!notit->event_header_field) { BT_LOGE_STR("Cannot create event header field wrapper from trace."); status = BT_NOTIF_ITER_STATUS_ERROR; @@ -1100,7 +1106,8 @@ enum bt_notif_iter_status read_event_header_begin_state( } notit->dscopes.event_header = - bt_event_header_field_borrow_field(notit->event_header_field); + bt_event_header_field_borrow_field( + notit->event_header_field); BT_ASSERT(notit->dscopes.event_header); } @@ -1192,7 +1199,7 @@ enum bt_notif_iter_status set_current_event_notification( struct bt_notif_iter *notit) { enum bt_notif_iter_status status = BT_NOTIF_ITER_STATUS_OK; - struct bt_notification *notif = NULL; + struct bt_private_notification *notif = NULL; BT_ASSERT(notit->meta.ec); BT_ASSERT(notit->packet); @@ -1202,7 +1209,7 @@ enum bt_notif_iter_status set_current_event_notification( notit->meta.ec->name->str, notit->packet); BT_ASSERT(notit->notif_iter); - notif = bt_notification_event_create(notit->notif_iter, + notif = bt_private_notification_event_create(notit->notif_iter, notit->meta.ec->ir_ec, notit->packet); if (!notif) { BT_LOGE("Cannot create event notification: " @@ -1241,14 +1248,15 @@ enum bt_notif_iter_status after_event_header_state( goto end; } - notit->event = bt_notification_event_borrow_event(notit->event_notif); + notit->event = bt_private_notification_event_borrow_event( + notit->event_notif); BT_ASSERT(notit->event); if (notit->event_header_field) { int ret; BT_ASSERT(notit->event); - ret = bt_event_move_header(notit->event, + ret = bt_event_move_header_field(notit->event, notit->event_header_field); if (ret) { status = BT_NOTIF_ITER_STATUS_ERROR; @@ -1262,8 +1270,8 @@ enum bt_notif_iter_status after_event_header_state( * the same value as the event header field within * notit->event. */ - BT_ASSERT(bt_event_borrow_header_field(notit->event) == - notit->dscopes.event_header); + BT_ASSERT(bt_event_borrow_header_field( + notit->event) == notit->dscopes.event_header); } notit->state = STATE_DSCOPE_EVENT_COMMON_CONTEXT_BEGIN; @@ -1288,7 +1296,8 @@ enum bt_notif_iter_status read_event_common_context_begin_state( if (event_common_context_fc->in_ir) { BT_ASSERT(!notit->dscopes.event_common_context); notit->dscopes.event_common_context = - bt_event_borrow_common_context_field(notit->event); + bt_event_borrow_common_context_field( + notit->event); BT_ASSERT(notit->dscopes.event_common_context); } @@ -1339,8 +1348,9 @@ enum bt_notif_iter_status read_event_spec_context_begin_state( if (event_spec_context_fc->in_ir) { BT_ASSERT(!notit->dscopes.event_spec_context); - notit->dscopes.event_spec_context = bt_event_borrow_specific_context_field( - notit->event); + notit->dscopes.event_spec_context = + bt_event_borrow_specific_context_field( + notit->event); BT_ASSERT(notit->dscopes.event_spec_context); } @@ -1394,8 +1404,9 @@ enum bt_notif_iter_status read_event_payload_begin_state( if (event_payload_fc->in_ir) { BT_ASSERT(!notit->dscopes.event_payload); - notit->dscopes.event_payload = bt_event_borrow_payload_field( - notit->event); + notit->dscopes.event_payload = + bt_event_borrow_payload_field( + notit->event); BT_ASSERT(notit->dscopes.event_payload); } @@ -1673,14 +1684,14 @@ struct bt_field *borrow_next_field(struct bt_notif_iter *notit) { struct bt_field *next_field = NULL; struct bt_field *base_field; - struct bt_field_class *base_fc; + const struct bt_field_class *base_fc; size_t index; BT_ASSERT(!stack_empty(notit->stack)); index = stack_top(notit->stack)->index; base_field = stack_top(notit->stack)->base; BT_ASSERT(base_field); - base_fc = bt_field_borrow_class(base_field); + base_fc = bt_field_borrow_class_const(base_field); BT_ASSERT(base_fc); switch (bt_field_class_get_type(base_fc)) { @@ -1688,9 +1699,11 @@ struct bt_field *borrow_next_field(struct bt_notif_iter *notit) { BT_ASSERT(index < bt_field_class_structure_get_member_count( - bt_field_borrow_class(base_field))); - next_field = bt_field_structure_borrow_member_field_by_index( - base_field, index); + bt_field_borrow_class_const( + base_field))); + next_field = + bt_field_structure_borrow_member_field_by_index( + base_field, index); break; } case BT_FIELD_CLASS_TYPE_STATIC_ARRAY: @@ -1829,9 +1842,11 @@ update_def_clock: field = borrow_next_field(notit); BT_ASSERT(field); - BT_ASSERT(bt_field_borrow_class(field) == fc->ir_fc); - BT_ASSERT(bt_field_get_class_type(field) == BT_FIELD_CLASS_TYPE_UNSIGNED_INTEGER || - bt_field_get_class_type(field) == BT_FIELD_CLASS_TYPE_UNSIGNED_ENUMERATION); + BT_ASSERT(bt_field_borrow_class_const(field) == fc->ir_fc); + BT_ASSERT(bt_field_get_class_type(field) == + BT_FIELD_CLASS_TYPE_UNSIGNED_INTEGER || + bt_field_get_class_type(field) == + BT_FIELD_CLASS_TYPE_UNSIGNED_ENUMERATION); bt_field_unsigned_integer_set_value(field, value); stack_top(notit->stack)->index++; @@ -1872,7 +1887,8 @@ enum bt_bfcr_status bfcr_unsigned_int_char_cb(uint64_t value, } string_field = stack_top(notit->stack)->base; - BT_ASSERT(bt_field_get_class_type(string_field) == BT_FIELD_CLASS_TYPE_STRING); + BT_ASSERT(bt_field_get_class_type(string_field) == + BT_FIELD_CLASS_TYPE_STRING); /* Append character */ str[0] = (char) value; @@ -1915,9 +1931,11 @@ enum bt_bfcr_status bfcr_signed_int_cb(int64_t value, field = borrow_next_field(notit); BT_ASSERT(field); - BT_ASSERT(bt_field_borrow_class(field) == fc->ir_fc); - BT_ASSERT(bt_field_get_class_type(field) == BT_FIELD_CLASS_TYPE_SIGNED_INTEGER || - bt_field_get_class_type(field) == BT_FIELD_CLASS_TYPE_SIGNED_ENUMERATION); + BT_ASSERT(bt_field_borrow_class_const(field) == fc->ir_fc); + BT_ASSERT(bt_field_get_class_type(field) == + BT_FIELD_CLASS_TYPE_SIGNED_INTEGER || + bt_field_get_class_type(field) == + BT_FIELD_CLASS_TYPE_SIGNED_ENUMERATION); bt_field_signed_integer_set_value(field, value); stack_top(notit->stack)->index++; @@ -1940,8 +1958,9 @@ enum bt_bfcr_status bfcr_floating_point_cb(double value, BT_ASSERT(fc->in_ir); field = borrow_next_field(notit); BT_ASSERT(field); - BT_ASSERT(bt_field_borrow_class(field) == fc->ir_fc); - BT_ASSERT(bt_field_get_class_type(field) == BT_FIELD_CLASS_TYPE_REAL); + BT_ASSERT(bt_field_borrow_class_const(field) == fc->ir_fc); + BT_ASSERT(bt_field_get_class_type(field) == + BT_FIELD_CLASS_TYPE_REAL); bt_field_real_set_value(field, value); stack_top(notit->stack)->index++; return status; @@ -1963,8 +1982,9 @@ enum bt_bfcr_status bfcr_string_begin_cb( BT_ASSERT(fc->in_ir); field = borrow_next_field(notit); BT_ASSERT(field); - BT_ASSERT(bt_field_borrow_class(field) == fc->ir_fc); - BT_ASSERT(bt_field_get_class_type(field) == BT_FIELD_CLASS_TYPE_STRING); + BT_ASSERT(bt_field_borrow_class_const(field) == fc->ir_fc); + BT_ASSERT(bt_field_get_class_type(field) == + BT_FIELD_CLASS_TYPE_STRING); ret = bt_field_string_clear(field); BT_ASSERT(ret == 0); @@ -2055,7 +2075,7 @@ enum bt_bfcr_status bfcr_compound_begin_cb( /* Push field */ BT_ASSERT(field); - BT_ASSERT(bt_field_borrow_class(field) == fc->ir_fc); + BT_ASSERT(bt_field_borrow_class_const(field) == fc->ir_fc); stack_push(notit->stack, field); /* @@ -2070,7 +2090,7 @@ enum bt_bfcr_status bfcr_compound_begin_cb( int ret; BT_ASSERT(bt_field_get_class_type(field) == - BT_FIELD_CLASS_TYPE_STRING); + BT_FIELD_CLASS_TYPE_STRING); notit->done_filling_string = false; ret = bt_field_string_clear(field); BT_ASSERT(ret == 0); @@ -2098,7 +2118,7 @@ enum bt_bfcr_status bfcr_compound_end_cb( } BT_ASSERT(!stack_empty(notit->stack)); - BT_ASSERT(bt_field_borrow_class(stack_top(notit->stack)->base) == + BT_ASSERT(bt_field_borrow_class_const(stack_top(notit->stack)->base) == fc->ir_fc); /* @@ -2112,7 +2132,7 @@ enum bt_bfcr_status bfcr_compound_end_cb( if (array_fc->is_text) { BT_ASSERT(bt_field_get_class_type( stack_top(notit->stack)->base) == - BT_FIELD_CLASS_TYPE_STRING); + BT_FIELD_CLASS_TYPE_STRING); bt_bfcr_set_unsigned_int_cb(notit->bfcr, bfcr_unsigned_int_cb); } @@ -2215,8 +2235,8 @@ struct ctf_field_class *bfcr_borrow_variant_selected_field_class_cb( if (selected_option->fc->in_ir) { struct bt_field *var_field = stack_top(notit->stack)->base; - ret = bt_field_variant_select_option_field(var_field, - option_index); + ret = bt_field_variant_select_option_field( + var_field, option_index); if (ret) { BT_LOGW("Cannot select variant field's option field: " "notit-addr=%p, var-field-addr=%p, " @@ -2235,26 +2255,25 @@ end: static void set_event_default_clock_value(struct bt_notif_iter *notit) { - struct bt_event *event = bt_notification_event_borrow_event( - notit->event_notif); + struct bt_event *event = + bt_private_notification_event_borrow_event( + notit->event_notif); struct bt_stream_class *sc = notit->meta.sc->ir_sc; BT_ASSERT(event); if (bt_stream_class_borrow_default_clock_class(sc)) { - int ret = bt_event_set_default_clock_value(event, + bt_event_set_default_clock_value(event, notit->default_clock_val); - - BT_ASSERT(ret == 0); } } static void notify_new_stream(struct bt_notif_iter *notit, - struct bt_notification **notification) + struct bt_private_notification **notification) { enum bt_notif_iter_status status; - struct bt_notification *ret = NULL; + struct bt_private_notification *ret = NULL; status = set_current_stream(notit); if (status != BT_NOTIF_ITER_STATUS_OK) { @@ -2264,7 +2283,7 @@ void notify_new_stream(struct bt_notif_iter *notit, BT_ASSERT(notit->stream); BT_ASSERT(notit->notif_iter); - ret = bt_notification_stream_begin_create(notit->notif_iter, + ret = bt_private_notification_stream_begin_create(notit->notif_iter, notit->stream); if (!ret) { BT_LOGE("Cannot create stream beginning notification: " @@ -2279,9 +2298,9 @@ end: static void notify_end_of_stream(struct bt_notif_iter *notit, - struct bt_notification **notification) + struct bt_private_notification **notification) { - struct bt_notification *ret; + struct bt_private_notification *ret; if (!notit->stream) { BT_LOGE("Cannot create stream for stream notification: " @@ -2290,7 +2309,7 @@ void notify_end_of_stream(struct bt_notif_iter *notit, } BT_ASSERT(notit->notif_iter); - ret = bt_notification_stream_end_create(notit->notif_iter, + ret = bt_private_notification_stream_end_create(notit->notif_iter, notit->stream); if (!ret) { BT_LOGE("Cannot create stream beginning notification: " @@ -2303,12 +2322,12 @@ void notify_end_of_stream(struct bt_notif_iter *notit, static void notify_new_packet(struct bt_notif_iter *notit, - struct bt_notification **notification) + struct bt_private_notification **notification) { int ret; enum bt_notif_iter_status status; - struct bt_notification *notif = NULL; - struct bt_stream_class *sc; + struct bt_private_notification *notif = NULL; + const struct bt_stream_class *sc; status = set_current_packet(notit); if (status != BT_NOTIF_ITER_STATUS_OK) { @@ -2321,35 +2340,31 @@ void notify_new_packet(struct bt_notif_iter *notit, if (bt_stream_class_packets_have_discarded_event_counter_snapshot(sc)) { BT_ASSERT(notit->snapshots.discarded_events != UINT64_C(-1)); - ret = bt_packet_set_discarded_event_counter_snapshot( + bt_packet_set_discarded_event_counter_snapshot( notit->packet, notit->snapshots.discarded_events); - BT_ASSERT(ret == 0); } if (bt_stream_class_packets_have_packet_counter_snapshot(sc)) { BT_ASSERT(notit->snapshots.packets != UINT64_C(-1)); - ret = bt_packet_set_packet_counter_snapshot( + bt_packet_set_packet_counter_snapshot( notit->packet, notit->snapshots.packets); - BT_ASSERT(ret == 0); } if (bt_stream_class_packets_have_default_beginning_clock_value(sc)) { BT_ASSERT(notit->snapshots.beginning_clock != UINT64_C(-1)); - ret = bt_packet_set_default_beginning_clock_value( + bt_packet_set_default_beginning_clock_value( notit->packet, notit->snapshots.beginning_clock); - BT_ASSERT(ret == 0); } if (bt_stream_class_packets_have_default_end_clock_value(sc)) { BT_ASSERT(notit->snapshots.end_clock != UINT64_C(-1)); - ret = bt_packet_set_default_end_clock_value( + bt_packet_set_default_end_clock_value( notit->packet, notit->snapshots.end_clock); - BT_ASSERT(ret == 0); } if (notit->packet_header_field) { - ret = bt_packet_move_header_field(notit->packet, - notit->packet_header_field); + ret = bt_packet_move_header_field( + notit->packet, notit->packet_header_field); if (ret) { goto end; } @@ -2361,13 +2376,14 @@ void notify_new_packet(struct bt_notif_iter *notit, * the same value as the packet header field within * notit->packet. */ - BT_ASSERT(bt_packet_borrow_header_field(notit->packet) == + BT_ASSERT(bt_packet_borrow_header_field( + notit->packet) == notit->dscopes.trace_packet_header); } if (notit->packet_context_field) { - ret = bt_packet_move_context_field(notit->packet, - notit->packet_context_field); + ret = bt_packet_move_context_field( + notit->packet, notit->packet_context_field); if (ret) { goto end; } @@ -2379,12 +2395,13 @@ void notify_new_packet(struct bt_notif_iter *notit, * the same value as the packet header field within * notit->packet. */ - BT_ASSERT(bt_packet_borrow_context_field(notit->packet) == + BT_ASSERT(bt_packet_borrow_context_field( + notit->packet) == notit->dscopes.stream_packet_context); } BT_ASSERT(notit->notif_iter); - notif = bt_notification_packet_begin_create(notit->notif_iter, + notif = bt_private_notification_packet_begin_create(notit->notif_iter, notit->packet); if (!notif) { BT_LOGE("Cannot create packet beginning notification: " @@ -2401,9 +2418,9 @@ end: static void notify_end_of_packet(struct bt_notif_iter *notit, - struct bt_notification **notification) + struct bt_private_notification **notification) { - struct bt_notification *notif; + struct bt_private_notification *notif; if (!notit->packet) { return; @@ -2415,7 +2432,7 @@ void notify_end_of_packet(struct bt_notif_iter *notit, } BT_ASSERT(notit->notif_iter); - notif = bt_notification_packet_end_create(notit->notif_iter, + notif = bt_private_notification_packet_end_create(notit->notif_iter, notit->packet); if (!notif) { BT_LOGE("Cannot create packet end notification: " @@ -2526,8 +2543,8 @@ void bt_notif_iter_destroy(struct bt_notif_iter *notit) enum bt_notif_iter_status bt_notif_iter_get_next_notification( struct bt_notif_iter *notit, - struct bt_private_connection_private_notification_iterator *notif_iter, - struct bt_notification **notification) + struct bt_self_notification_iterator *notif_iter, + struct bt_private_notification **notification) { enum bt_notif_iter_status status = BT_NOTIF_ITER_STATUS_OK;