ACPI 定义块:系统总线的 _SB 和 _SB_ 之间的区别
ACPI Definition Block: Difference between _SB and _SB_ for System bus
我正在研究 edk2 (UEFI)。因此,我对 DSDT table 中定义的设备路径有些担忧。在这个table中,我们使用/_SB
作为系统总线的根,但在Linux上是/_SB_
。例如,我通过命令检查
$ cat /sys/devices/LNXSYSTM\:00/LNXSYBUS\:00/PNP0A08\:00/device\:00/path
有时,我也看到一些 ACPI table 使用 /_SB_
来引用设备路径。
你知道它有什么不同吗?怎么用?
非常感谢!
ACPI 规范(我在这里进一步参考 v6.3)第 19.3.1 章定义了允许在名称中使用的字符。虽然它没有清楚地说明短于 4 个字符的名称发生了什么。第 5.3 章对此进行了说明
By convention, when an ASL compiler pads a name shorter than 4 characters, it is done so with trailing underscores (‘_’). See the language definition for AML NameSeg in the ACPI Source Language (ASL) Reference chapter.
这一点也被20.4章证实了,它展示了AML中的字节流。例如名字
\S2
翻译成
RootChar 'S2__'
也就是说,\_SB
和 \_SB_
是同名的等效符号。
我正在研究 edk2 (UEFI)。因此,我对 DSDT table 中定义的设备路径有些担忧。在这个table中,我们使用/_SB
作为系统总线的根,但在Linux上是/_SB_
。例如,我通过命令检查
$ cat /sys/devices/LNXSYSTM\:00/LNXSYBUS\:00/PNP0A08\:00/device\:00/path
有时,我也看到一些 ACPI table 使用 /_SB_
来引用设备路径。
你知道它有什么不同吗?怎么用?
非常感谢!
ACPI 规范(我在这里进一步参考 v6.3)第 19.3.1 章定义了允许在名称中使用的字符。虽然它没有清楚地说明短于 4 个字符的名称发生了什么。第 5.3 章对此进行了说明
By convention, when an ASL compiler pads a name shorter than 4 characters, it is done so with trailing underscores (‘_’). See the language definition for AML NameSeg in the ACPI Source Language (ASL) Reference chapter.
这一点也被20.4章证实了,它展示了AML中的字节流。例如名字
\S2
翻译成
RootChar 'S2__'
也就是说,\_SB
和 \_SB_
是同名的等效符号。