- return CTF_MSG_ITER_STATUS_OK;
-}
-
-static inline
-enum state check_emit_msg_stream_end(struct ctf_msg_iter *msg_it)
-{
- enum state next_state;
-
- if (msg_it->emit_stream_end_message) {
- next_state = STATE_EMIT_MSG_STREAM_END;
- } else {
- next_state = STATE_DONE;
- }
-
- return next_state;
-}
-
-static inline
-enum ctf_msg_iter_status handle_state(struct ctf_msg_iter *msg_it)
-{
- enum ctf_msg_iter_status status = CTF_MSG_ITER_STATUS_OK;
- const enum state state = msg_it->state;
-
- BT_COMP_LOGT("Handling state: msg-it-addr=%p, state=%s",
- msg_it, state_string(state));
-
- // TODO: optimalize!
- switch (state) {
- case STATE_INIT:
- msg_it->state = STATE_SWITCH_PACKET;
- break;
- case STATE_SWITCH_PACKET:
- status = switch_packet_state(msg_it);
- break;
- case STATE_DSCOPE_TRACE_PACKET_HEADER_BEGIN:
- status = read_packet_header_begin_state(msg_it);
- break;
- case STATE_DSCOPE_TRACE_PACKET_HEADER_CONTINUE:
- status = read_packet_header_continue_state(msg_it);
- break;
- case STATE_AFTER_TRACE_PACKET_HEADER:
- status = after_packet_header_state(msg_it);
- break;
- case STATE_DSCOPE_STREAM_PACKET_CONTEXT_BEGIN:
- status = read_packet_context_begin_state(msg_it);
- break;
- case STATE_DSCOPE_STREAM_PACKET_CONTEXT_CONTINUE:
- status = read_packet_context_continue_state(msg_it);
- break;
- case STATE_AFTER_STREAM_PACKET_CONTEXT:
- status = after_packet_context_state(msg_it);
- break;
- case STATE_EMIT_MSG_STREAM_BEGINNING:
- msg_it->state = STATE_CHECK_EMIT_MSG_DISCARDED_EVENTS;
- break;
- case STATE_CHECK_EMIT_MSG_DISCARDED_EVENTS:
- status = check_emit_msg_discarded_events(msg_it);
- break;
- case STATE_EMIT_MSG_DISCARDED_EVENTS:
- msg_it->state = STATE_CHECK_EMIT_MSG_DISCARDED_PACKETS;
- break;
- case STATE_CHECK_EMIT_MSG_DISCARDED_PACKETS:
- status = check_emit_msg_discarded_packets(msg_it);
- break;
- case STATE_EMIT_MSG_DISCARDED_PACKETS:
- msg_it->state = STATE_EMIT_MSG_PACKET_BEGINNING;
- break;
- case STATE_EMIT_MSG_PACKET_BEGINNING:
- msg_it->state = STATE_DSCOPE_EVENT_HEADER_BEGIN;
- break;
- case STATE_DSCOPE_EVENT_HEADER_BEGIN:
- status = read_event_header_begin_state(msg_it);
- break;
- case STATE_DSCOPE_EVENT_HEADER_CONTINUE:
- status = read_event_header_continue_state(msg_it);
- break;
- case STATE_AFTER_EVENT_HEADER:
- status = after_event_header_state(msg_it);
- break;
- case STATE_DSCOPE_EVENT_COMMON_CONTEXT_BEGIN:
- status = read_event_common_context_begin_state(msg_it);
- break;
- case STATE_DSCOPE_EVENT_COMMON_CONTEXT_CONTINUE:
- status = read_event_common_context_continue_state(msg_it);
- break;
- case STATE_DSCOPE_EVENT_SPEC_CONTEXT_BEGIN:
- status = read_event_spec_context_begin_state(msg_it);
- break;
- case STATE_DSCOPE_EVENT_SPEC_CONTEXT_CONTINUE:
- status = read_event_spec_context_continue_state(msg_it);
- break;
- case STATE_DSCOPE_EVENT_PAYLOAD_BEGIN:
- status = read_event_payload_begin_state(msg_it);
- break;
- case STATE_DSCOPE_EVENT_PAYLOAD_CONTINUE:
- status = read_event_payload_continue_state(msg_it);
- break;
- case STATE_EMIT_MSG_EVENT:
- msg_it->state = STATE_DSCOPE_EVENT_HEADER_BEGIN;
- break;
- case STATE_EMIT_QUEUED_MSG_EVENT:
- msg_it->state = STATE_EMIT_MSG_EVENT;
- break;
- case STATE_SKIP_PACKET_PADDING:
- status = skip_packet_padding_state(msg_it);
- break;
- case STATE_EMIT_MSG_PACKET_END_MULTI:
- msg_it->state = STATE_SKIP_PACKET_PADDING;
- break;
- case STATE_EMIT_MSG_PACKET_END_SINGLE:
- msg_it->state = STATE_EMIT_MSG_STREAM_END;
- break;
- case STATE_EMIT_QUEUED_MSG_PACKET_END:
- msg_it->state = STATE_EMIT_MSG_PACKET_END_SINGLE;
- break;
- case STATE_CHECK_EMIT_MSG_STREAM_END:
- msg_it->state = check_emit_msg_stream_end(msg_it);
- break;
- case STATE_EMIT_MSG_STREAM_END:
- msg_it->state = STATE_DONE;
- break;
- case STATE_DONE:
- break;
- default:
- BT_COMP_LOGF("Unknown CTF plugin message iterator state: "
- "msg-it-addr=%p, state=%d", msg_it, msg_it->state);
- bt_common_abort();
- }
-
- BT_COMP_LOGT("Handled state: msg-it-addr=%p, status=%s, "
- "prev-state=%s, cur-state=%s",
- msg_it, ctf_msg_iter_status_string(status),
- state_string(state), state_string(msg_it->state));
- return status;
-}
-
-BT_HIDDEN
+ return CTF_MSG_ITER_STATUS_OK;
+}
+
+static inline enum state check_emit_msg_stream_end(struct ctf_msg_iter *msg_it)
+{
+ enum state next_state;
+
+ if (msg_it->emit_stream_end_message) {
+ next_state = STATE_EMIT_MSG_STREAM_END;
+ } else {
+ next_state = STATE_DONE;
+ }
+
+ return next_state;
+}
+
+static inline enum ctf_msg_iter_status handle_state(struct ctf_msg_iter *msg_it)
+{
+ enum ctf_msg_iter_status status = CTF_MSG_ITER_STATUS_OK;
+ const enum state state = msg_it->state;
+
+ BT_COMP_LOGT("Handling state: msg-it-addr=%p, state=%s", msg_it, state_string(state));
+
+ // TODO: optimalize!
+ switch (state) {
+ case STATE_INIT:
+ msg_it->state = STATE_SWITCH_PACKET;
+ break;
+ case STATE_SWITCH_PACKET:
+ status = switch_packet_state(msg_it);
+ break;
+ case STATE_DSCOPE_TRACE_PACKET_HEADER_BEGIN:
+ status = read_packet_header_begin_state(msg_it);
+ break;
+ case STATE_DSCOPE_TRACE_PACKET_HEADER_CONTINUE:
+ status = read_packet_header_continue_state(msg_it);
+ break;
+ case STATE_AFTER_TRACE_PACKET_HEADER:
+ status = after_packet_header_state(msg_it);
+ break;
+ case STATE_DSCOPE_STREAM_PACKET_CONTEXT_BEGIN:
+ status = read_packet_context_begin_state(msg_it);
+ break;
+ case STATE_DSCOPE_STREAM_PACKET_CONTEXT_CONTINUE:
+ status = read_packet_context_continue_state(msg_it);
+ break;
+ case STATE_AFTER_STREAM_PACKET_CONTEXT:
+ status = after_packet_context_state(msg_it);
+ break;
+ case STATE_EMIT_MSG_STREAM_BEGINNING:
+ msg_it->state = STATE_CHECK_EMIT_MSG_DISCARDED_EVENTS;
+ break;
+ case STATE_CHECK_EMIT_MSG_DISCARDED_EVENTS:
+ status = check_emit_msg_discarded_events(msg_it);
+ break;
+ case STATE_EMIT_MSG_DISCARDED_EVENTS:
+ msg_it->state = STATE_CHECK_EMIT_MSG_DISCARDED_PACKETS;
+ break;
+ case STATE_CHECK_EMIT_MSG_DISCARDED_PACKETS:
+ status = check_emit_msg_discarded_packets(msg_it);
+ break;
+ case STATE_EMIT_MSG_DISCARDED_PACKETS:
+ msg_it->state = STATE_EMIT_MSG_PACKET_BEGINNING;
+ break;
+ case STATE_EMIT_MSG_PACKET_BEGINNING:
+ msg_it->state = STATE_DSCOPE_EVENT_HEADER_BEGIN;
+ break;
+ case STATE_DSCOPE_EVENT_HEADER_BEGIN:
+ status = read_event_header_begin_state(msg_it);
+ break;
+ case STATE_DSCOPE_EVENT_HEADER_CONTINUE:
+ status = read_event_header_continue_state(msg_it);
+ break;
+ case STATE_AFTER_EVENT_HEADER:
+ status = after_event_header_state(msg_it);
+ break;
+ case STATE_DSCOPE_EVENT_COMMON_CONTEXT_BEGIN:
+ status = read_event_common_context_begin_state(msg_it);
+ break;
+ case STATE_DSCOPE_EVENT_COMMON_CONTEXT_CONTINUE:
+ status = read_event_common_context_continue_state(msg_it);
+ break;
+ case STATE_DSCOPE_EVENT_SPEC_CONTEXT_BEGIN:
+ status = read_event_spec_context_begin_state(msg_it);
+ break;
+ case STATE_DSCOPE_EVENT_SPEC_CONTEXT_CONTINUE:
+ status = read_event_spec_context_continue_state(msg_it);
+ break;
+ case STATE_DSCOPE_EVENT_PAYLOAD_BEGIN:
+ status = read_event_payload_begin_state(msg_it);
+ break;
+ case STATE_DSCOPE_EVENT_PAYLOAD_CONTINUE:
+ status = read_event_payload_continue_state(msg_it);
+ break;
+ case STATE_EMIT_MSG_EVENT:
+ msg_it->state = STATE_DSCOPE_EVENT_HEADER_BEGIN;
+ break;
+ case STATE_EMIT_QUEUED_MSG_EVENT:
+ msg_it->state = STATE_EMIT_MSG_EVENT;
+ break;
+ case STATE_SKIP_PACKET_PADDING:
+ status = skip_packet_padding_state(msg_it);
+ break;
+ case STATE_EMIT_MSG_PACKET_END_MULTI:
+ msg_it->state = STATE_SKIP_PACKET_PADDING;
+ break;
+ case STATE_EMIT_MSG_PACKET_END_SINGLE:
+ msg_it->state = STATE_EMIT_MSG_STREAM_END;
+ break;
+ case STATE_EMIT_QUEUED_MSG_PACKET_END:
+ msg_it->state = STATE_EMIT_MSG_PACKET_END_SINGLE;
+ break;
+ case STATE_CHECK_EMIT_MSG_STREAM_END:
+ msg_it->state = check_emit_msg_stream_end(msg_it);
+ break;
+ case STATE_EMIT_MSG_STREAM_END:
+ msg_it->state = STATE_DONE;
+ break;
+ case STATE_DONE:
+ break;
+ default:
+ BT_COMP_LOGF("Unknown CTF plugin message iterator state: "
+ "msg-it-addr=%p, state=%d",
+ msg_it, msg_it->state);
+ bt_common_abort();
+ }
+
+ BT_COMP_LOGT("Handled state: msg-it-addr=%p, status=%s, "
+ "prev-state=%s, cur-state=%s",
+ msg_it, ctf_msg_iter_status_string(status), state_string(state),
+ state_string(msg_it->state));
+ return status;
+}
+