fuchsia.kernel

新增:7

通訊協定

反擊 (Counter)

定義於 fuchsia.kernel/kernel-counter.fidl

擷取 kcounter 資訊的通訊協定。

GetInspectVmo

擷取包含 kcounter 摘要資料的 VMO。buffer 中傳回的 VMO 採用「inspect-vmo」格式,相關說明請參閱其他文件。

要求

<EMPTY>

回應

名稱類型
status zx/Result
buffer fuchsia.mem/Buffer

UpdateInspectVmo

要求更新先前傳回的 VMO 緩衝區資料。如果資料最近已更新,則可能不會更新 (更新頻率不固定,但大約每隔幾秒更新一次)。

要求

<EMPTY>

回應

名稱類型
status zx/Result

CpuResource

定義於 fuchsia.kernel/cpu-resource.fidl

提供 ZX_RSRC_KIND_SYSTEM 且基礎為 ZX_RSRC_SYSTEM_CPU_BASE 的通訊協定。

取得

取得 CPU 資源控制代碼。

要求

<EMPTY>

回應

名稱類型
resource handle<resource>

DebugBroker

定義於 fuchsia.kernel/kernel-debug.fidl

代表呼叫端與具有特殊權限的偵錯系統呼叫互動。

SendDebugCommand

將偵錯指令傳遞至核心殼層。查看 zx_debug_send_command syscall 處理方式,找出有效值。

要求

名稱類型
command string:1024

回應

名稱類型
status zx/Result

SetTracingEnabled

設定是否啟用核心追蹤 (ktrace)。

要求

名稱類型
enabled bool

回應

名稱類型
status zx/Result

DebugResource

定義於 fuchsia.kernel/debug-resource.fidl

提供 ZX_RSRC_KIND_SYSTEM 且基礎為 ZX_RSRC_SYSTEM_DEBUG_BASE 的通訊協定。

取得

取得偵錯資源控制代碼。

要求

<EMPTY>

回應

名稱類型
resource handle<resource>

DebuglogResource

定義於 fuchsia.kernel/debuglog-resource.fidl

提供 ZX_RSRC_KIND_SYSTEM 且基礎為 ZX_RSRC_SYSTEM_DEBUGLOG_BASE 的通訊協定。

新增:HEAD

取得

取得偵錯記錄資源控制代碼。

新增:HEAD

要求

<EMPTY>

回應

名稱類型
resource handle<resource>

EnergyInfoResource

定義於 fuchsia.kernel/energy-info-resource.fidl

提供 ZX_RSRC_KIND_SYSTEM 且基礎為 ZX_RSRC_SYSTEM_ENERGY_INFO_BASE 的通訊協定。

新增:HEAD

取得

取得 EnergyInfo 資源控制代碼。

新增:HEAD

要求

<EMPTY>

回應

名稱類型
resource handle<resource>

HypervisorResource

定義於 fuchsia.kernel/hypervisor-resource.fidl

提供管理程序資源的通訊協定。

取得

取得管理程序資源控制代碼。

要求

<EMPTY>

回應

名稱類型
resource handle<resource>

InfoResource

定義於 fuchsia.kernel/info-resource.fidl

提供 ZX_RSRC_KIND_SYSTEM 且基礎為 ZX_RSRC_SYSTEM_INFO_BASE 的通訊協定。

取得

取得資訊資源控制代碼。

要求

<EMPTY>

回應

名稱類型
resource handle<resource>

IommuResource

定義於 fuchsia.kernel/iommu-resource.fidl

提供 ZX_RSRC_KIND_SYSTEM 且基礎為 ZX_RSRC_SYSTEM_IOMMU_BASE 的通訊協定。

新增:HEAD

取得

取得 iommu 資源控制代碼。

新增:HEAD

要求

<EMPTY>

回應

名稱類型
resource handle<resource>

IoportResource

定義於 fuchsia.kernel/ioport-resource.fidl

提供 IO 通訊埠資源的通訊協定,可存取所有有效範圍。

取得

取得 IO 通訊埠資源控制代碼。

要求

<EMPTY>

回應

名稱類型
resource handle<resource>

IrqResource

定義於 fuchsia.kernel/irq-resource.fidl

提供 IRQ 資源並可存取所有有效範圍的通訊協定。

取得

取得 IRQ 資源控制代碼。

要求

<EMPTY>

回應

名稱類型
resource handle<resource>

MmioResource

定義於 fuchsia.kernel/mmio-resource.fidl

提供 MMIO 資源的通訊協定,可存取所有有效範圍。

取得

取得 MMIO 資源控制代碼。

要求

<EMPTY>

回應

名稱類型
resource handle<resource>

MsiResource

定義於 fuchsia.kernel/msi-resource.fidl

提供 ZX_RSRC_KIND_SYSTEM 且基礎為 ZX_RSRC_SYSTEM_MSI_BASE 的通訊協定。

新增:HEAD

取得

取得 msi 資源控制代碼。

新增:HEAD

要求

<EMPTY>

回應

名稱類型
resource handle<resource>

PowerResource

定義於 fuchsia.kernel/power-resource.fidl

提供 ZX_RSRC_KIND_SYSTEM 且基礎為 ZX_RSRC_SYSTEM_POWER_BASE 的通訊協定。

取得

取得電源資源控制代碼。

要求

<EMPTY>

回應

名稱類型
resource handle<resource>

ProfileResource

定義於 fuchsia.kernel/profile-resource.fidl

提供 ZX_RSRC_KIND_SYSTEM 且基礎為 ZX_RSRC_SYSTEM_PROFILE_BASE 的通訊協定。

新增:HEAD

取得

取得設定檔資源控制代碼。

新增:HEAD

要求

<EMPTY>

回應

名稱類型
resource handle<resource>

RootJob

定義於 fuchsia.kernel/root-job.fidl

提供根工作的通訊協定。

TODO(https://fxbug.dev/42109098):請先諮詢 Zircon 團隊,再使用這項功能。

取得

取得根 job。

要求

<EMPTY>

回應

名稱類型
job handle<job>

RootJobForInspect

定義於 fuchsia.kernel/root-job.fidl

為根工作提供受限權利的通訊協定,具體包括: INSPECT | ENUMERATE | DUPLICATE | TRANSFER

取得

取得根 job。

要求

<EMPTY>

回應

名稱類型
job handle<job>

SamplingResource

定義於 fuchsia.kernel/sampling-resource.fidl

提供 ZX_RSRC_KIND_SYSTEM 且基礎為 ZX_RSRC_SYSTEM_SAMPLING_BASE 的通訊協定。

新增:HEAD

取得

取得取樣資源控制代碼。

新增:HEAD

要求

<EMPTY>

回應

名稱類型
resource handle<resource>

SmcResource

定義於 fuchsia.kernel/smc-resource.fidl

提供 SMC 資源存取所有有效範圍的通訊協定。

取得

取得 SMC 資源控制代碼。

要求

<EMPTY>

回應

名稱類型
resource handle<resource>

StallResource

定義於 fuchsia.kernel/stall-resource.fidl

提供 ZX_RSRC_KIND_SYSTEM 的通訊協定,其基礎 ZX_RSRC_SYSTEM_STALL_BASE 適用於應能測量及接收停滯通知的程式。

新增:HEAD

取得

取得停滯資源控制代碼。

新增:HEAD

要求

<EMPTY>

回應

名稱類型
resource handle<resource>

統計資料

定義於 fuchsia.kernel/kernel-stats.fidl

提供核心統計資料的通訊協定。這大致上是 ZX_INFO_KMEM_STATS 和 ZX_INFO_CPU_STATS 主題的 zx_object_get_info 包裝函式,目前需要非常強大的「根資源」功能才能取得。如果程式只需要統計資料,應改用這項服務,而非提供該能力。如果通訊協定因故無法擷取統計資料,就會發生無法復原的錯誤,並關閉管道。

GetCpuLoad

取得指定時間長度內,每個 CPU 的平均負載百分比 (0.0 - 100.0)。

負載的計算方式為 (100 - %idle),其中 %idle 是 idle_time (來自 PerCpuStats) 在一段時間內的百分比值。

要求

名稱類型
duration zx/Duration

回應

名稱類型
per_cpu_load vector<float32>:512

GetCpuStats

要求

<EMPTY>

回應

名稱類型
stats CpuStats

GetMemoryStats

要求

<EMPTY>

回應

名稱類型
stats MemoryStats

GetMemoryStatsCompression

新增:16

要求

<EMPTY>

回應

名稱類型
payload MemoryStatsCompression

GetMemoryStatsExtended

已淘汰

要求

<EMPTY>

回應

名稱類型
stats MemoryStatsExtended

TracingResource

定義於 fuchsia.kernel/tracing-resource.fidl

提供 ZX_RSRC_KIND_SYSTEM 且基礎為 ZX_RSRC_SYSTEM_TRACING_BASE 的通訊協定。

新增:HEAD

取得

取得追蹤資源控制代碼。

新增:HEAD

要求

<EMPTY>

回應

名稱類型
resource handle<resource>

VmexResource

定義於 fuchsia.kernel/vmex-resource.fidl

提供 ZX_RSRC_KIND_SYSTEM (基本 ZX_RSRC_SYSTEM_VMEX_BASE) 給應能將 VMO 標示為可執行的程式的通訊協定。

取得

取得 VMEX 資源控制代碼。

要求

<EMPTY>

回應

名稱類型
resource handle<resource>

STRUCTS

CpuStats

定義於 fuchsia.kernel/kernel-stats.fidl

欄位類型說明預設
actual_num_cpus uint64

這是實際裝置上的 CPU 總數。這可能與向量 per_cpu_stats 的長度不同,因為基礎系統呼叫可能不會傳回所有 CPU 的統計資料。

無預設值
per_cpu_stats vector<PerCpuStats>:512? 無預設值

TABLES

MemoryStats

定義於 fuchsia.kernel/kernel-stats.fidl

序數欄位類型說明
total_bytes uint64
free_bytes uint64
wired_bytes uint64
total_heap_bytes uint64
free_heap_bytes uint64
vmo_bytes uint64
mmu_overhead_bytes uint64
ipc_bytes uint64
other_bytes uint64
free_loaned_bytes uint64
新增:HEAD
cache_bytes uint64
新增:HEAD
slab_bytes uint64
新增:HEAD
zram_bytes uint64
新增:HEAD
vmo_reclaim_total_bytes uint64
新增:HEAD
vmo_reclaim_newest_bytes uint64
新增:HEAD
vmo_reclaim_oldest_bytes uint64
新增:HEAD
vmo_reclaim_disabled_bytes uint64
新增:HEAD
vmo_discardable_locked_bytes uint64
新增:HEAD
vmo_discardable_unlocked_bytes uint64
新增:HEAD

MemoryStatsCompression

定義於 fuchsia.kernel/kernel-stats.fidl

新增:16

序數欄位類型說明
uncompressed_storage_bytes uint64
compressed_storage_bytes uint64
compressed_fragmentation_bytes uint64
compression_time zx/Duration
decompression_time zx/Duration
total_page_compression_attempts uint64
failed_page_compression_attempts uint64
total_page_decompressions uint64
compressed_page_evictions uint64
eager_page_compressions uint64
memory_pressure_page_compressions uint64
critical_memory_page_compressions uint64
pages_decompressed_unit_ns uint64
pages_decompressed_within_log_time array<uint64, 8>

MemoryStatsExtended

定義於 fuchsia.kernel/kernel-stats.fidl

已淘汰

序數欄位類型說明
total_bytes uint64
free_bytes uint64
wired_bytes uint64
total_heap_bytes uint64
free_heap_bytes uint64
vmo_bytes uint64
vmo_pager_total_bytes uint64
vmo_pager_newest_bytes uint64
vmo_pager_oldest_bytes uint64
vmo_discardable_locked_bytes uint64
vmo_discardable_unlocked_bytes uint64
mmu_overhead_bytes uint64
ipc_bytes uint64
other_bytes uint64

PerCpuStats

定義於 fuchsia.kernel/kernel-stats.fidl

序數欄位類型說明
cpu_number uint32
flags uint32
idle_time zx/Duration
reschedules uint64
context_switches uint64
irq_preempts uint64
yields uint64
ints uint64
timer_ints uint64
timers uint64
page_faults uint64
exceptions uint64
syscalls uint64
reschedule_ipis uint64
generic_ipis uint64
normalized_busy_time zx/Duration
新增:HEAD
active_energy_consumption_nj uint64
新增:HEAD
idle_energy_consumption_nj uint64
新增:HEAD

常數

名稱值類型說明
DEBUG_COMMAND_MAX 1024 uint32

指令字串中的位元組數上限