通訊協定
供應商
定義於 fuchsia.tracing.provider/provider.fidl
應用程式必須實作並向 TraceRegistry 註冊的供應器介面,才能參與追蹤。
如需這個介面的 C++ 實作方式,請參閱 //zircon/system/ulib/trace-provider/,應用程式可以輕鬆設定這個介面。
GetKnownCategories
取得這個供應商可能產生的追蹤記錄類別。
要求
<EMPTY>
回應
| 名稱 | 類型 |
|---|---|
categories |
vector<fuchsia.tracing/KnownCategory>:5000
|
初始化
初始化追蹤作業,並準備好為指定 categories 中的事件寫入追蹤記錄,以供 fifo 用於發出信號。buffer追蹤尚未開始,仍需進行 Start() 呼叫。
一次最多只能啟用一項追蹤作業。在收到 Terminate() 呼叫前,後續收到的 Initialize() 要求都必須忽略。
要求
| 名稱 | 類型 |
|---|---|
config |
ProviderConfig
|
開始
開始追蹤。
如果追蹤作業已啟動,提供者必須忽略要求。
沒有結果。供應商必須在 fifo 上傳送 TRACE_PROVIDER_STARTED封包,指出啟動是否成功。
要求
| 名稱 | 類型 |
|---|---|
options |
StartOptions
|
停止
停止追蹤。
如果追蹤作業已停止,供應器必須忽略要求。
供應器將所有最終事件寫入追蹤緩衝區後,必須在 fifo 上傳送 TRACE_PROVIDER_STOPPED 封包。請注意,Initialize,Terminate 之間可能會收到多個 Start,Stop 要求。
要求
<EMPTY>
終止
終止追蹤。
如果追蹤作業尚未停止,系統會先停止追蹤作業。
追蹤作業完全終止後,供應商必須關閉 buffer 和 fifo,向追蹤管理員指出追蹤作業已完成。
要求
<EMPTY>
認證單位
定義於 fuchsia.tracing.provider/provider.fidl
追蹤記錄供應商用來向追蹤系統註冊的服務。請注意,這個介面的一項特性是,註冊完成後,供應商可以捨棄這個連線。
RegisterProvider
註冊追蹤記錄供應器。
注意:註冊作業是非同步的,只有在傳回此值之後的某個時間點,供應商才會實際註冊。如要取消註冊,只要關閉 Provider 管道即可。
pid 是供應商的程序 ID,name 是供應商的名稱。這兩者都會用於記錄和診斷訊息。
要求
| 名稱 | 類型 |
|---|---|
provider |
client_end:Provider
|
pid |
zx/Koid
|
name |
string:100
|
RegisterProviderSynchronously
同步註冊追蹤記錄供應商。供應商註冊完成前,呼叫不會傳回。如果註冊成功,則傳回 s 為 ZX_OK。
如果追蹤作業已開始,started 為 true,這會提示供應商等待 Start() 訊息,再繼續作業 (如果供應商不想在收到 Start() 前捨棄追蹤記錄)。如要取消註冊,只要關閉 Provider 管道即可。
pid 是供應商的程序 ID,name 是供應商的名稱。這兩者都會用於記錄和診斷訊息。
要求
| 名稱 | 類型 |
|---|---|
provider |
client_end:Provider
|
pid |
zx/Koid
|
name |
string:100
|
回應
| 名稱 | 類型 |
|---|---|
s |
zx/Status
|
started |
bool
|
STRUCTS
ProviderConfig 資源
定義於 fuchsia.tracing.provider/provider.fidl
追蹤記錄供應商設定。
| 欄位 | 類型 | 說明 | 預設 |
|---|---|---|---|
buffering_mode |
fuchsia.tracing/BufferingMode
|
新增:11
|
無預設值 |
buffer |
handle<vmo>
|
要寫入追蹤記錄的緩衝區。 |
無預設值 |
fifo |
handle<fifo>
|
當追蹤記錄供應器觀察到 |
無預設值 |
categories |
vector<string:100>:5000
|
要收集資料的追蹤記錄類別。 新增:11
|
無預設值 |
StartOptions
定義於 fuchsia.tracing.provider/provider.fidl
其他選項,可在開始時控管追蹤。
| 欄位 | 類型 | 說明 | 預設 |
|---|---|---|---|
buffer_disposition |
fuchsia.tracing/BufferDisposition
|
開始收集資料時是否要清除緩衝區,以及清除方式。舉例來說,這樣一來,您就能在同一個緩衝區中收集多個「開始/停止追蹤」執行作業。 新增:11
|
無預設值 |
additional_categories |
vector<string:100>:5000
|
要新增至 新增:11
|
無預設值 |