FIFO 封包

如需進一步瞭解 FIFO 封包在 Fuchsia 追蹤系統中的運作方式, 請參閱 Fuchsia 追蹤系統

格式

FIFO 封包是固定大小,格式如下:

typedef struct trace_provider_packet {
    // One of TRACE_PROVIDER_*.
    uint16_t request;

    // For alignment and future concerns, must be zero.
    uint16_t reserved;

    // Optional data for the request.
    // The contents depend on the request.
    // If unused they must be passed as zero.
    uint32_t data32;
    uint64_t data64;
} trace_provider_packet_t;

定義的封包數

下列 FIFO 封包是針對 Fuchsia 追蹤系統定義的:

TRACE_PROVIDER_STARTED

這個封包會從追蹤記錄提供者傳送至追蹤記錄管理員。 向追蹤記錄管理員通知供應商已收到「開始追蹤」 並開始收集追蹤記錄資料。 封包的 data32 欄位內含 FIFO 的版本號碼 與供應器使用的通訊協定相同這個值是由 TRACE_PROVIDER_FIFO_PROTOCOL_VERSION 英吋 //zircon/system/ulib/trace-provider/include/lib/trace-provider/provider.h。 如果追蹤記錄管理員看到了無法辨識的通訊協定,就會關閉 並忽略供應器提供的所有追蹤資料。

TRACE_PROVIDER_SAVE_BUFFER

這個封包會在串流時從追蹤記錄提供者傳送至追蹤管理員 模式。通知追蹤記錄管理員,說明緩衝區已滿且需要儲存。 data32 欄位包含包裝數,也就是計算次數 寫入功能已從一個緩衝區切換至下一個緩衝區。需要儲存的緩衝區 為 (data32 & 1)data64 欄位包含結尾的偏移值 資料寫入耐用緩衝區

一次只能傳送一個緩衝區儲存要求。下一個不能是 才會發出,直到收到 TRACE_PROVIDER_BUFFER_SAVED 確認 先前的要求

TRACE_PROVIDER_BUFFER_SAVED

這個封包會從 Trace 管理員傳送至追蹤服務供應商 就能切換至串流模式通知追蹤服務供應商 已儲存緩衝區。data32data64 欄位必須有 與原始 TRACE_PROVIDER_SAVE_BUFFER 要求中的相同值。