資源

名稱

資源 - 位址空間權限和帳戶

SYNOPSIS

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

說明

資源用於限制對特定位址空間區域的存取,且必須建立 VMO 和 IRQ,以及存取 x86 ioport。

資源物件包含單一資源種類,並具有基本位址和 len 參數,可定義資源持有者有權存取的位址空間範圍。範圍涵蓋 base 到 base + len (不含)。這些物件建立後即無法變更。有效的 kind 值為 ZX_RSRC_KIND_MMIO、ZX_RSRC_KIND_IOPORT、ZX_RSRC_KIND_IRQ、ZX_RSRC_KIND_SMC 和 ZX_RSRC_KIND_SYSTEM。

系統資源是包含其他資源的特殊案例,所有資源的 len 都是 1。這些資源在系統資源中各有其基礎。系統資源的有效基礎值為 ZX_RSRC_SYSTEM_HYPERVISOR_BASE、ZX_RSRC_SYSTEM_VMEX_BASE、ZX_RSRC_SYSTEM_DEBUG_BASE、ZX_RSRC_SYSTEM_INFO_BASE、ZX_RSRC_SYSTEM_CPU_BASE、ZX_RSRC_SYSTEM_POWER_BASE、ZX_RSRC_SYSTEM_ENERGY_INFO_BASE、ZX_RSRC_SYSTEM_IOMMU_BASE、ZX_RSRC_SYSTEM_FRAMEBUFFER_BASE、ZX_RSRC_SYSTEM_PROFILE_BASE、ZX_RSRC_SYSTEM_MSI_BASE 和 ZX_SYSTEM_DEBUGLOG_BASE。

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

適當的父項資源是指其範圍從 base 到 base+len 包含新資源要求的範圍。父項資源的種類必須與要建立的資源種類相符。目前,專屬資源無法用於建立新資源。建立後,使用的資源父項與建立的新資源之間沒有任何關係。

資源分配方式分為「共用」或「專屬」。共用資源會授予存取指定位址空間的權限,但不會將該位址空間保留給資源擁有者專用。專屬資源僅授予專屬資源持有者存取區域的權限。專屬和共用資源範圍不得重疊。

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

附註

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

SYSCALLS