TDL通用数据及通用ACPI表定义方法

156 阅读2分钟

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

简介

一、TDL通用数据类型

这些数据类型用于构建ACPI表,而这些表并不是由TDL 编译器所不知道的。

UINT8 生成一个8位无符号整数 UINT16 生成一个16位无符号整数 UINT24 生成一个24位无符号整数 UINT32 生成一个32位无符号整数 UINT40 生成一个40位无符号整数 UINT48 生成一个48位无符号整数 UINT56 生成一个56位无符号整数 UINT64 生成一个64位无符号整数 字符串 生成一个空尾的ASCII字符串(ASCIIZ)。 Unicode 生成一个空结尾的Unicode(UTF-16)字符串。 Buffer 生成一个8位无符号整数的缓冲区。 GUID 在一个16字节的缓冲区中生成一个编码的GUID。 Label - 在表格中的当前位置(偏移量)生成一个Label。这个标签可以在整数表达式中被引用,方法是在标签前加上 标签前加一个'$'符号。

二、通用ACPI表的定义

不为TDL编译器所知的表可以通过使用通用数据类型来定义。所有ACPI表都被认为具有通用的ACPI头,但是本节定义了设备的行为,因为该行为与电源管理有关,特别是与ACPI定义的四个设备电源状态有关。其目的是使设备供应商能够设计出满足OSPM基本需求的可管理电源的产品,并且能够被任何ACPI兼容的操作系统所利用。

下面是acpi表的相关示例代码:

Signature : "OEMZ"
Table Length : 00000052
Revision : 01
Checksum : 6C
Oem ID : "TEST"
Oem Table ID : "CUSTOM "
Oem Revision : 00000001
Asl Compiler ID : "INTL
Asl Compiler Revision : 00000001
    UINT8 : 01
    UINT8 : 08
    UINT8 : 00
    UINT8 : 00
    UINT64 : 0000000000000066
    UINT32 : 00000000
    UINT8 : 12
    String : "Hello World!"

三、完结

本章节结束,撒花。