Блок определения 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_ являются эквивалентными обозначениями с тем же именем.

Другие вопросы по тегам