ACPI 编程模型

为了让操作系统方便的管理计算机对电源的消耗,ACPI 定义了关于硬件寄存器的接口,为了让硬件厂商在实现上面有更多的选择性,ACPI 

选用了各种表去描述系统信息,特点‘还有各种控制的方法,这些表列出了主板上的各种device ,还包括主板上不能被其他标准所管理的各种设备,

还有,系统的各种兼容性,比如对S3 , S4 的支持,系统指示灯,这样操作系统只要知道这些表就可以去管理计算机而不需要知道具体的硬件实现。

    在这里, 我们主要讲两个方面的内容。

   1.这些表是以何种方式组织在一起的,

   2. 名字空间(namespace) 的概念。



1.1 系统描述表架构简要介绍。

名词解释:

RSDP (Root System Description Pointer) : 看到root 我想,大家就能猜出这个表的意思了,由它指向系统描述表,在操作系统初始化的时候,

操作系统必须找到这个pointer , 找到它之后,就可以顺着他找到RSDT. 


RSDT(Root System Description Table) (RSDT)

操作系统顺着RSDP找到RSDT, 在RSDT 里面有个有Entry 字段,Entry field 就指向了其他32-bit 长的描述表。

ACPI 编程模型_第1张图片


XSDT(Extended System Description Table)

XSDT 和RSDT 有着完全相同的功能, 但多名字Extended 就可以看出,它肯定要比RSDT 功能更强悍一些,它的Entry field 比RSDT 要长。

前者只能容纳32-bit 的地址,它可以容纳64 bit 的地址。

ACPI 编程模型_第2张图片




2 ACPI Namespace

这里的namespace 和C++ 里面的namespace 应该是一个意思,用于唯一确定一个object . 比如1班有个叫小强的, 2 班也有个叫小强的。
但我们不会弄混,因为他们的namespace(class)不一样。在同一个namespace 下面,应该避免重名(collision), 如果重名了,可想而知,就真的
没法确定在叫哪一个叫小强了。

很自然的, namespace 以树状结构呈现,为了规范化操作,定义namespace 的时候,有着如下规则:
  • 所有的名字固定为32-bit 长。
  • 首字母只能是'A'-'Z', '_', 
  • 剩下的部分可以是数字,大写字母,下划线
  • 不够4个字符的,末尾用下划线补齐。
  • 以下划线开头的,为系统(specification) 保留的。
  • 以 \ 开头的,表示namespace 的根。
  • ^ 表示当前namespace 的parent


你可能感兴趣的:(ACPI 编程模型)