Resource(资源)


英文原文快照


名称

resource —— 地址空间的权限和审计

概要

资源是一个不可变对象,用于验证创建的由地址空间支持的对象的系统调用访问权,或对它们向地址空间访问权限进行授权。 这些对象包括vm对象中断和x86的ioport。

描述

资源用于控制对地址空间的特定区域的访问,并且按需要创建VMO和IRQ,以及x86上ioport的访问。

资源对象由单个资源类型组成,其中baselen参数定义了资源持有者被授予访问权限的地址空间范围,范围包括base,但不包括地址为base+len的位置。 这些对象在创建后是不可变的。 有效的种类值为ZX_RSRC_KIND_ROOTZX_RSRC_KIND_HYPERVISORZX_RSRC_KIND_MMIOZX_RSRC_KIND_IOPORTZX_RSRC_KIND_IRQ。 可以通过调用resource_create使用根资源创建新的资源。 初始根资源由内核在引导期间创建,并分发给userboot启动的第一个用户空间进程。

资源分配可以是共享(shared)独占(exclusive) 状态。 共享资源授予访问给定地址空间的权限,但不会仅为资源所有者独占该地址空间的权限。 独占资源仅授予该区域对独占资源的持有者的访问权限。 独占和共享资源的范围不能重叠。

资源是生命周期可追踪的,并且在最后一个句柄关闭时被释放。 在独占资源的情况下,这意味着给定的地址范围将被释放回给定的种类资源的分配器。 通过资源创建的对象不保存对资源的引用,因此不会使其保持活动状态。

注释

资源通常是DDK和平台总线驱动程序的私有资源。 目前,这意味着ACPI和平台总线分别保存根资源,并向其他驱动程序分发更细粒度的资源。

系统调用

interrupt_create, ioports_requeat, resource_create, vmo_create_physical