Resource(资源)
名称
resource —— 地址空间的权限和审计
概要
资源是一个不可变对象,用于验证创建的由地址空间支持的对象的系统调用访问权,或对它们向地址空间访问权限进行授权。 这些对象包括vm对象,中断和x86的ioport。
描述
资源用于控制对地址空间的特定区域的访问,并且按需要创建VMO和IRQ,以及x86上ioport的访问。
资源对象由单个资源类型组成,其中base和len参数定义了资源持有者被授予访问权限的地址空间范围,范围包括base,但不包括地址为base+len的位置。 这些对象在创建后是不可变的。 有效的种类值为ZX_RSRC_KIND_ROOT,ZX_RSRC_KIND_HYPERVISOR,ZX_RSRC_KIND_MMIO,ZX_RSRC_KIND_IOPORT和ZX_RSRC_KIND_IRQ。 可以通过调用resource_create使用根资源创建新的资源。 初始根资源由内核在引导期间创建,并分发给userboot启动的第一个用户空间进程。
资源分配可以是共享(shared) 或独占(exclusive) 状态。 共享资源授予访问给定地址空间的权限,但不会仅为资源所有者独占该地址空间的权限。 独占资源仅授予该区域对独占资源的持有者的访问权限。 独占和共享资源的范围不能重叠。
资源是生命周期可追踪的,并且在最后一个句柄关闭时被释放。 在独占资源的情况下,这意味着给定的地址范围将被释放回给定的种类资源的分配器。 通过资源创建的对象不保存对资源的引用,因此不会使其保持活动状态。
注释
资源通常是DDK和平台总线驱动程序的私有资源。 目前,这意味着ACPI和平台总线分别保存根资源,并向其他驱动程序分发更细粒度的资源。
系统调用
interrupt_create, ioports_requeat, resource_create, vmo_create_physical