编译器自动字段与特殊字段的使用

210 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第25天,点击查看活动详情

简介

一、由编译器自动设置的字段

有几种类型的ACPI表字段是由编译器自动设置的。

  • 校验和:所有ACPI表的校验和都是自动计算和插入的。这包括出现在标准ACPI表头中的主要校验和,以及任何额外的校验和字段,如出现在ACPI 2.0 RSDP中的扩展校验和。
  • 表和子表长度:所有ACPI表的长度都是自动计算和插入的。这包括出现在通用ACPI表头中的主表长度,以及任何适用的内部子表的长度。

下面是相关字段的使用示例:

[004] Table Length : 000000F4
[001] Subtable Type : 08 <Platform Interrupt Sources>
[001] Length : 10
[001] Subtable Type : 01 <Memory Affinity>
[001] Length : 28
  • 标志:正如上一篇文章所描述的,各个标志是由编译器自动汇总并插入编译器自动进行汇总,并作为正确大小和数值的整数插入到ACPI表,作为正确的大小和数值的整数。
  • 编译器的ID:数据表编译器在编译过程中自动将iASL的ID和当前版本插入每个表的通用ACPI表头。iASL的ID和当前版本,在编译过程中插入每个表的通用ACPI表头。

二、特殊字段

  • 保留字段:所有被ACPI(或其他)规范中的表定义声明为保留的字段都应该被设置为零。
  • 表的修订:普通ACPI表头中的这个字段通常非常重要,它定义了其余表的结构。重要的,它定义了其余表的结构。开发者应该注意确保这个字段 开发者应该注意确保这个值是正确和 当前的。这个字段不是由编译器自动设置的。它是 相反,它被用来指示表的哪个版本正在被 编译。
  • 表签名:在ACPI中,有几个表的签名要么与表名不同,要么有不寻常的长度。与表名不同,或者有不寻常的长度。

FADT - 签名是 "FACP"。

MADT - 签名是 "APIC"。

RSDP - 签名是 "RSD PTR"(有尾部空格)。

三、完结

ACPI章节未完结,待续。