ACPI 定义块:系统总线的_SB 和_SB_ 之间的区别

问题描述 投票:0回答:1

我正在研究 edk2 (UEFI)。因此,我对 DSDT 表中定义的设备路径有些担忧。在此表中,我们使用

/_SB
作为系统总线的根,但在 Linux 上是
/_SB_
。例如,我通过命令检查

 $ cat /sys/devices/LNXSYSTM\:00/LNXSYBUS\:00/PNP0A08\:00/device\:00/path

有时,我也看到一些 ACPI 表使用

/_SB_
来引用设备路径。

你知道它有什么不同吗?怎么用?

非常感谢!

linux-kernel uefi acpi edk2
1个回答
3
投票

ACPI 规范(我在这里进一步参考 v6.4)第 19.3.1 章 定义了允许在名称中使用的字符。虽然它没有清楚地说明短于 4 个字符的名称发生了什么。 第 5.3 章

对此进行了说明

按照惯例,当 ASL 编译器填充一个短于 4 个字符的名称时,它会使用尾随下划线(‘_’)来完成。请参阅 ACPI 源语言 (ASL) 参考章节中 AML NameSeg 的语言定义。

这也得到了 20.4 章 的证实,该章显示了 AML 中的字节流。例如名字

\S2

翻译成

RootChar 'S2__'

就是说,

\_SB
\_SB_
是同名的等效符号。

© www.soinside.com 2019 - 2024. All rights reserved.