Блок определения ACPI: разница между _SB и _SB_ для системной шины
Я расследую edk2 (UEFI). Итак, у меня есть некоторые опасения по поводу пути устройства, определенного в таблице DSDT. В этой таблице мы используем /_SB
для корня системной шины, но это /_SB_
в линуксе Например, я проверил с помощью команды
$ cat /sys/devices/LNXSYSTM\:00/LNXSYBUS\:00/PNP0A08\:00/device\:00/path
И иногда я также вижу использование таблицы ACPI /_SB_
для ссылки на путь устройства.
Вы знаете, как это отличается? Как это использовать?
Спасибо вам большое!
1 ответ
В главе 19.3.1 спецификации ACPI (я здесь и далее ссылаюсь на v6.3) определяются символы, разрешенные для использования в именах. Хотя не ясно, что произошло с именами короче 4 символов. Это разъясняется в главе 5.3.
По соглашению, когда компилятор ASL дополняет имя короче 4 символов, это делается с помощью завершающих подчеркиваний ('_'). См. Определение языка для AML NameSeg в справочной главе ACPI Source Language (ASL).
Это также подтверждается главой 20.4, в которой показан поток байтов в AML. В примере имя
\S2
переводится на
RootChar 'S2__'
Тем не менее, \_SB
а также \_SB_
являются эквивалентными обозначениями с тем же именем.