+ dmesg_msg_iter->linebuf);
+ goto end;
+ }
+
+handle_state:
+ BT_ASSERT(dmesg_comp->trace);
+
+ switch (dmesg_msg_iter->state) {
+ case STATE_EMIT_STREAM_BEGINNING:
+ BT_ASSERT(dmesg_msg_iter->tmp_event_msg);
+ *msg = bt_message_stream_beginning_create(
+ dmesg_msg_iter->pc_msg_iter, dmesg_comp->stream);
+ dmesg_msg_iter->state = STATE_EMIT_STREAM_ACTIVITY_BEGINNING;
+ break;
+ case STATE_EMIT_STREAM_ACTIVITY_BEGINNING:
+ BT_ASSERT(dmesg_msg_iter->tmp_event_msg);
+ *msg = bt_message_stream_activity_beginning_create(
+ dmesg_msg_iter->pc_msg_iter, dmesg_comp->stream);
+ dmesg_msg_iter->state = STATE_EMIT_PACKET_BEGINNING;
+ break;
+ case STATE_EMIT_PACKET_BEGINNING:
+ BT_ASSERT(dmesg_msg_iter->tmp_event_msg);
+ *msg = bt_message_packet_beginning_create(
+ dmesg_msg_iter->pc_msg_iter, dmesg_comp->packet);
+ dmesg_msg_iter->state = STATE_EMIT_EVENT;
+ break;
+ case STATE_EMIT_EVENT:
+ BT_ASSERT(dmesg_msg_iter->tmp_event_msg);
+ *msg = dmesg_msg_iter->tmp_event_msg;
+ dmesg_msg_iter->tmp_event_msg = NULL;
+ break;
+ case STATE_EMIT_PACKET_END:
+ *msg = bt_message_packet_end_create(
+ dmesg_msg_iter->pc_msg_iter, dmesg_comp->packet);
+ dmesg_msg_iter->state = STATE_EMIT_STREAM_ACTIVITY_END;
+ break;
+ case STATE_EMIT_STREAM_ACTIVITY_END:
+ *msg = bt_message_stream_activity_end_create(
+ dmesg_msg_iter->pc_msg_iter, dmesg_comp->stream);
+ dmesg_msg_iter->state = STATE_EMIT_STREAM_END;
+ break;
+ case STATE_EMIT_STREAM_END:
+ *msg = bt_message_stream_end_create(
+ dmesg_msg_iter->pc_msg_iter, dmesg_comp->stream);
+ dmesg_msg_iter->state = STATE_DONE;
+ break;
+ default:
+ break;
+ }
+
+ if (!*msg) {
+ BT_LOGE("Cannot create message: dmesg-comp-addr=%p",
+ dmesg_comp);
+ status = BT_SELF_MESSAGE_ITERATOR_STATUS_ERROR;