通訊協定
供應商
定義於 fuchsia.tracing.provider/provider.fidl
應用程式必須實作並向 TraceRegistry 註冊的供應器介面,才能參與追蹤。
請參閱 //zircon/system/ulib/trace-provider/,瞭解這個介面的 C++ 實作,應用程式可輕鬆設定。
GetKnownCategories
取得這個供應器可能產生的追蹤類別。
要求
<EMPTY>
回應
| 名稱 | 類型 |
|---|---|
categories |
vector<fuchsia.tracing/KnownCategory>:5000
|
初始化
初始化追蹤記錄,並準備將指定 categories 中事件的追蹤記錄寫入 buffer,並使用 fifo 傳送信號。追蹤尚未開始,仍須呼叫 Start()。
一次最多只能啟用一個追蹤記錄。在 Terminate() 呼叫前收到的後續 Initialize() 要求必須忽略。
要求
| 名稱 | 類型 |
|---|---|
config |
ProviderConfig
|
開始
開始追蹤。
如果追蹤作業已開始,供應器必須忽略要求。
沒有結果。供應商必須在 fifo 上傳送 TRACE_PROVIDER_STARTED 封包,指出啟動成功/失敗。
要求
| 名稱 | 類型 |
|---|---|
options |
StartOptions
|
停止
停止追蹤。
如果追蹤已停止,供應商必須忽略要求。
供應器將所有最終事件寫入追蹤緩衝區後,必須在 fifo 上傳送 TRACE_PROVIDER_STOPPED 封包。請注意,在 Initialize,Terminate 之間,可能會收到多個 Start,Stop 要求。
要求
<EMPTY>
終止
終止追蹤。
如果追蹤尚未停止,系統會先停止追蹤。追蹤完全終止後,供應器必須關閉 buffer 和 fifo,向追蹤管理員表示追蹤已完成。
要求
<EMPTY>
ProviderV2
定義於 fuchsia.tracing.provider/provider.fidl
應用程式必須實作並向 TraceRegistry 註冊的供應器介面,才能參與追蹤。
清除
要求供應商讀取緩衝區,無論緩衝區是否已滿。
一般來說,串流模式只會在資料量足以要求緩衝區交換和資料清除時,才會傳送資料。這會產生較少但較大且突發的資料移轉。
有些客戶可能希望定期進行小規模資料移轉。這些用戶端可能會在準備好接收資料時,手動叫用 Flush。
要求
<EMPTY>
GetKnownCategories
取得這個供應器可能產生的追蹤類別。
要求
<EMPTY>
回應
| 名稱 | 類型 |
|---|---|
payload |
ProviderV2_GetKnownCategories_Result
|
初始化
初始化追蹤,並準備將指定 categories 中事件的追蹤記錄寫入 buffer。追蹤尚未開始,仍須呼叫 Start()。
一次最多只能啟用一個追蹤記錄。在 Terminate() 呼叫前收到的後續 Initialize() 要求必須忽略。
要求
| 名稱 | 類型 |
|---|---|
config |
ProviderConfigV2
|
NotifyBufferSaved
緩衝區已儲存 (僅限串流模式)。
要求
| 名稱 | 類型 |
|---|---|
wrapped_count |
uint32
|
durable_data_end |
uint64
|
OnAlert
傳送警示。
回應
| 名稱 | 類型 |
|---|---|
name |
string:14
|
OnSaveBuffer
緩衝區已滿,需要儲存 (僅限串流模式)。
回應
| 名稱 | 類型 |
|---|---|
wrapped_count |
uint32
|
durable_data_end |
uint64
|
開始
開始追蹤。
如果追蹤作業已開始,供應器必須忽略要求。
要求
| 名稱 | 類型 |
|---|---|
options |
StartOptions
|
回應
| 名稱 | 類型 |
|---|---|
payload |
ProviderV2_Start_Result
|
停止
停止追蹤。
如果追蹤已停止,供應商必須忽略要求。
供應器完成將最終事件寫入追蹤緩衝區後,必須傳送 OnStopped() 事件。請注意,在 Initialize,Terminate 之間,可能會收到多個 Start,Stop 要求。
要求
<EMPTY>
回應
| 名稱 | 類型 |
|---|---|
payload |
ProviderV2_Stop_Result
|
終止
終止追蹤。
如果追蹤尚未停止,系統會先停止追蹤。
要求
<EMPTY>
回應
| 名稱 | 類型 |
|---|---|
payload |
ProviderV2_Terminate_Result
|
認證單位
定義於 fuchsia.tracing.provider/provider.fidl
追蹤記錄供應商用來向追蹤系統註冊的服務。請注意,這個介面的其中一項屬性是,一旦註冊完成,供應商就可以中斷這個連線。
RegisterProvider
註冊追蹤記錄供應器。注意:註冊是非同步作業,只有在傳回這個值後,供應器才會實際註冊。如要取消註冊,只要關閉供應器管道即可。
pid 是供應商的程序 ID,name 是供應商的名稱。這兩者都會用於記錄和診斷訊息。
淘汰
請改用「RegisterV2」,使用以 FIDL 為基礎的協調通訊協定。
要求
| 名稱 | 類型 |
|---|---|
provider |
client_end:Provider
|
pid |
zx/Koid
|
name |
string:100
|
RegisterProviderSynchronously
同步註冊追蹤記錄供應器。在供應商註冊前,呼叫不會傳回。如果註冊成功,傳回的 s 為 ZX_OK。如果追蹤已開始,started 為 true,這會提示供應商在繼續之前等待 Start() 訊息,如果它不希望在收到 Start() 之前刪除追蹤記錄。如要取消註冊,只要關閉供應器管道即可。
pid 是供應商的程序 ID,name 是供應商的名稱。這兩者都會用於記錄和診斷訊息。
淘汰
請改用「RegisterV2Synchronously」,使用以 FIDL 為基礎的協調通訊協定。
要求
| 名稱 | 類型 |
|---|---|
provider |
client_end:Provider
|
pid |
zx/Koid
|
name |
string:100
|
回應
| 名稱 | 類型 |
|---|---|
s |
zx/Result
|
started |
bool
|
RegisterV2
使用 V2 通訊協定註冊追蹤記錄供應器。
注意:註冊是非同步作業,只有在傳回後,供應器才會實際註冊。
如要取消註冊,請關閉 provider 連線。
要求
| 名稱 | 類型 |
|---|---|
provider |
client_end:ProviderV2
|
pid |
zx/Koid
|
name |
string:100
|
RegisterV2Synchronously
使用 V2 通訊協定同步註冊追蹤記錄供應器。
在註冊供應器之前,呼叫不會傳回。除非需要與追蹤系統同步,確保擷取特定事件,否則大多數呼叫端應使用 RegisterV2。
如要取消註冊,請關閉 provider 連線。
要求
| 名稱 | 類型 |
|---|---|
provider |
client_end:ProviderV2
|
pid |
zx/Koid
|
name |
string:100
|
回應
| 名稱 | 類型 |
|---|---|
payload |
Registry_RegisterV2Synchronously_Result
|
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
|
無預設值 |
ProviderV2_GetKnownCategories_Response
定義於 fuchsia.tracing.provider/provider.fidl
| 欄位 | 類型 | 說明 | 預設 |
|---|---|---|---|
categories |
vector<fuchsia.tracing/KnownCategory>:5000
|
無預設值 |
ProviderV2_Start_Response
定義於 fuchsia.tracing.provider/provider.fidl
<EMPTY>
ProviderV2_Stop_Response
定義於 fuchsia.tracing.provider/provider.fidl
<EMPTY>
ProviderV2_Terminate_Response
定義於 fuchsia.tracing.provider/provider.fidl
<EMPTY>
Registry_RegisterV2Synchronously_Response
定義於 fuchsia.tracing.provider/provider.fidl
| 欄位 | 類型 | 說明 | 預設 |
|---|---|---|---|
started |
bool
|
如果追蹤已開始,則為 true,這會提示供應商在繼續之前等待 Start() 訊息,如果它不希望在收到 Start() 之前刪除追蹤記錄。 |
無預設值 |
StartOptions
定義於 fuchsia.tracing.provider/provider.fidl
在啟動時控制追蹤的其他選項。
| 欄位 | 類型 | 說明 | 預設 |
|---|---|---|---|
buffer_disposition |
fuchsia.tracing/BufferDisposition
|
開始收集資料時,是否要清除緩衝區,以及清除方式。舉例來說,這可讓多個「開始/停止追蹤記錄」執行作業收集到同一個緩衝區中。 新增:11
|
無預設值 |
additional_categories |
vector<string:100>:5000
|
要新增至 新增:11
|
無預設值 |
TABLES
ProviderConfigV2 資源
定義於 fuchsia.tracing.provider/provider.fidl
追蹤記錄提供者設定。
| 序數 | 欄位 | 類型 | 說明 |
|---|---|---|---|
1 |
buffering_mode |
fuchsia.tracing/BufferingMode
|
|
2 |
buffer |
handle<vmo>
|
要寫入追蹤記錄的緩衝區。 |
3 |
categories |
vector<string:100>:5000
|
要收集資料的追蹤類別。 |
UNIONS
ProviderV2_GetKnownCategories_Result strict
定義於 fuchsia.tracing.provider/provider.fidl
| 序數 | Variant | 類型 | 說明 |
|---|---|---|---|
1 |
response |
ProviderV2_GetKnownCategories_Response
|
|
3 |
framework_err |
internal
|
ProviderV2_Start_Result strict
定義於 fuchsia.tracing.provider/provider.fidl
| 序數 | Variant | 類型 | 說明 |
|---|---|---|---|
1 |
response |
ProviderV2_Start_Response
|
|
3 |
framework_err |
internal
|
ProviderV2_Stop_Result strict
定義於 fuchsia.tracing.provider/provider.fidl
| 序數 | Variant | 類型 | 說明 |
|---|---|---|---|
1 |
response |
ProviderV2_Stop_Response
|
|
3 |
framework_err |
internal
|
ProviderV2_Terminate_Result strict
定義於 fuchsia.tracing.provider/provider.fidl
| 序數 | Variant | 類型 | 說明 |
|---|---|---|---|
1 |
response |
ProviderV2_Terminate_Response
|
|
3 |
framework_err |
internal
|
Registry_RegisterV2Synchronously_Result strict
定義於 fuchsia.tracing.provider/provider.fidl
| 序數 | Variant | 類型 | 說明 |
|---|---|---|---|
1 |
response |
Registry_RegisterV2Synchronously_Response
|
|
2 |
err |
zx/Status
|
|
3 |
framework_err |
internal
|
常數
| 名稱 | 值 | 類型 | 說明 |
|---|---|---|---|
| MAX_ALERT_NAME_LENGTH |
14
|
uint32 |
警告名稱的長度上限。 新增:31
|