如需進一步瞭解 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 管理員傳送至追蹤服務供應商
就能切換至串流模式通知追蹤服務供應商
已儲存緩衝區。data32
和 data64
欄位必須有
與原始 TRACE_PROVIDER_SAVE_BUFFER
要求中的相同值。