2018年7月24日 星期二

[ACPI] ASL Operator


本篇文章參考
ACPI Specification Version 6.2 (Errata A)
ACPI Specification Version 5.1 (Errata B)
參考章節為CH19 ACPI Source Language(ASL) Reference

Add

Add(Addend1, Addend2, Result) => Integer
將Addend1與Addend2相加存放到Result。

CreateWordField

CreateWordField(SourceBuffer, ByteIndex, WordFieldName)
在SourceBuffer的ByteIndex Offset建立一個Word長度且名為WordFieldName的Object。

DerefOf

DerefOf(Source) => Object
回傳Source所Reference的Object。

Device

Device(DeviceName) {TermList}
建立一個名為DeviceName的Object,用以代表processor、bus或device等硬體。並會開啟一個name scope。

EISAID

EISAID(EisaIdString) => DWordConst
將形式為"UUUNNNN"(U為大寫字母,N為十六進位數字)的文字字串轉換為4 byte長度的EISA ID數字編碼。

Field

Field (RegionName, AccessType, LockRule, UpdateRule) {FieldUnitList}
可用以代表RegionName中的某段區塊資料。
AccessType為預設存取寬度,可為AnyAccByteAccWordAccDWordAccQWordAcc
FileUnitList的Entry可為下列幾種形式,
FieldUnitName, BitLength - Field Unit所使用的命名與長度。Field Unit用以代表某段資料。
Offect (ByteOffset) - 下個Field Unit的Offset。

Include

Include(FilePathName)
引入其他ASL File。

Index

Index (Source, IndexNum, Destination) => ObjectReference
取得 Source 中第 IndexNum項的 Reference。
如 Source為 Buffer,Index會回傳第IndexNum的byte的Reference。
如 Source為 String,Index會回傳第IndexNum的字元的Reference。
如 Source為 Package,Index會回傳第IndexNum的Object的Reference。

Method

Method (MethodName, NumArgs, SerializeRule, SyncLevel, ReturnType, ParameterTypes) {TermList}
建立一個名為MethodName的control method,並會開啟一個name scope。
NumArgs代表Method的參數數量。為optional如不使用則代表此Method不使用參數,而最多可使用7個參數,參數分別reference到Arg0 - Arg6
SerializeRule可填為SerializedNotSerialized,Serialized代表此Method不會被其他thread同時存取,用以防止產生相同namespace object。若沒有指定則視為NotSerialized

Name

Name(ObjectName, Object)
建立名為ObjectName的Object,並且references到Object。

OperationRegion

OperationRegion(RegionName, RegionSpace, Offset, Length)
宣告名為RegionName的Operation Region,配合Field Object用以讀取系統硬體空間。

PowerResource

PowerResource(ResourceName, SystemLevel, ResourceOrder) {ObjectList}
宣告名為ResourceName的power resource。

Scope

Scope(Location) {ObjectList}
宣告名為Location的namespace,並且ObjectList以Location為參考namespace。
或將目前namespace切換成已存在的namespace。


沒有留言:

張貼留言