引用分层数据节点(Referencing hierarchical data nodes)
ACPI 通常只允许引用树中的设备对象。分层数据扩展节点可能无法直接引用,因此本文档定义了一种实现此类引用的方案。
引用由设备对象名称和一个或多个分层数据扩展 [dsd-guide] 键组成。具体而言,键引用的分层数据扩展节点应直接位于父对象(即设备对象或另一个分层数据扩展节点)之下。
分层数据节点中的键应由节点名称、“@”字符和十六进制表示的节点编号(无前缀或后缀)组成。相同的 ACPI 对象应包括 _DSD 属性扩展,其属性“reg”应具有与节点编号相同的数值。
如果分层数据扩展节点没有数值,则应从 ACPI 对象的 _DSD 属性中省略“reg”属性,并应从分层数据扩展键中省略“@”字符和数字。
例子
在下面的 ASL(ACPI Source Language) 代码片段中,“reference” _DSD 属性包含对 DEV0 的设备对象引用,并且在该设备对象下,有一个指向 NOD1 对象的分层数据扩展键“node@1”,最后,有一个指向 ANOD 对象的分层数据扩展键“anothernode”,ANOD 对象也是引用的最终目标节点。
Device (DEV0) { Name (_DSD, Package () { ToUUID("dbb8e3e6-5886-4ba6-8795-1319f52a966b"), Package () { Package () { "node@0", "NOD0" }, Package () { "node@1", "NOD1" }, } }) Name (NOD0, Package() { ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"), Package () { Package () { "reg", 0 }, Package () { "random-property", 3 }, } }) Name (NOD1, Package() { ToUUID("dbb8e3e6-5886-4ba6-8795-1319f52a966b"), Package () { Package () { "reg", 1 }, Package () { "anothernode", "ANOD" }, } }) Name (ANOD, Package() { ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"), Package () { Package () { "random-property", 0 }, } }) } Device (DEV1) { Name (_DSD, Package () { ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"), Package () { Package () { "reference", Package () { ^DEV0, "node@1", "anothernode" } }, } }) }
另请参见Graphs中的graph示例。
参考
- [dsd-guide] DSD Guide.
-
https://github.com/UEFI/DSD-Guide/blob/main/dsd-guide.adoc, referenced 2021-11-30.
本文来自博客园,作者:闹闹爸爸,转载请注明原文链接:https://www.cnblogs.com/wanglouxiaozi/p/18724205
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)