資源

名稱

資源 - 位址空間權利和會計

SYNOPSIS

資源是不可變動的物件,用於驗證對系統呼叫的存取權,這些系統呼叫會建立由位址空間支援的物件,或允許存取位址空間。包括 VM 物件中斷和 x86 ioport。

說明

資源可用來控管對特定位址空間區域的存取權,且是建立 VMO 和 IRQ,以及存取 x86 ioport 的必要條件。

資源物件包含單一資源種類,以及定義資源持有者可存取位址空間範圍的基底位址和長度參數。範圍涵蓋 base,但不包括 base + len。這些物件建立後即無法變更。有效的 kind 值為 ZX_RSRC_KIND_MMIOZX_RSRC_KIND_IOPORTZX_RSRC_KIND_IRQZX_RSRC_KIND_SMCZX_RSRC_KIND_SYSTEM

系統資源是包含其他資源的特殊情況,所有資源的 len 都是 1。這些資源在系統資源中各有自己的基礎。系統資源的有效基底值為 ZX_RSRC_SYSTEM_HYPERVISOR_BASEZX_RSRC_SYSTEM_VMEX_BASEZX_RSRC_SYSTEM_DEBUG_BASEZX_RSRC_SYSTEM_INFO_BASEZX_RSRC_SYSTEM_CPU_BASEZX_RSRC_SYSTEM_POWER_BASEZX_RSRC_SYSTEM_MEXEC_BASEZX_RSRC_SYSTEM_ENERGY_INFO_BASEZX_RSRC_SYSTEM_IOMMU_BASEZX_RSRC_SYSTEM_FRAMEBUFFER_BASEZX_RSRC_SYSTEM_PROFILE_BASEZX_RSRC_SYSTEM_MSI_BASEZX_SYSTEM_DEBUGLOG_BASE

您可以呼叫 zx_resource_create(),使用適當的父項資源建立新資源。核心會在啟動期間建立每「種」的初始資源,並交給使用者啟動程序啟動的第一個使用者空間程序。

適當的父項資源是指本身的範圍 (從 basebase+len) 包含新資源要求的範圍。父項資源的「種類」必須與要建立的資源「種類」相符。目前無法使用專屬資源建立新資源。建立資源後,所用的資源父項與新建立的資源之間就沒有關係。

資源分配可以是共用專用。共用資源會授予存取指定位址空間的權限,但不會為資源擁有者保留該位址空間。專屬資源只允許專屬資源持有者存取該區域。專屬和共用資源範圍不得重疊。

系統會追蹤資源的生命週期,並在最後一個控制代碼關閉時釋出資源。如果是專屬資源,這表示系統會將指定位址範圍釋回給指定類型資源的分配器。透過資源建立的物件不會保留對資源的參照,因此不會讓資源保持運作。

附註

資源通常是 DDK 和平台匯流排驅動程式的私有資源。目前,這表示 ACPI 和平台匯流排分別保留根資源,並將更精細的資源交給其他驅動程式。

SYSCALLS