ASL操作符

语法:Scope(Location){ObjectList}

用法:打开并且为对象集分配一个基础名字范围。在此范围内定义的所有对象名字都是基于Location创建的,Scope本身并不创建对象。

Scope (\PCI0)
{Name (Index,3)Scope (\){Method (RQ) {Return (0)}}}

新创建的对象被放置在ACPI名字空间中:\PCI0.Index \RQ

语法:Device(DeviceName){ObjectList}

用法:创建名字为DeviceName的设备对象,此对象可表示一个总线,一个设备或者其他任何类似的硬件,Device打开一个名字范围。

语法:Processor(ProcessorName,ProcessorID,PBlockAddress,PBlockLength){ObjectList}

用法:声明一个名字为ProcessorName的处理器对象,Processor打开一个名字范围,每个处理器都需要一个唯一的ProcessorID值,PBlockAddress为处理器寄存器块提供了系统I/O地址,每个处理器可以提供不同的地址,PBlockLength是处理器寄存器块的字节长度,其值是0或者6,除了一个特例外,所有处理器都需要相同的PBlockLength值

语法:Package(NumElements){PackageList}

用法:NumElements可以是整数,整数即数组元素的个数,如果未指定,则默认为初始值。PackageList只允许存在两类元素:数据对象(整数、字符串、字节数组和对象数组)、对控制对象的参考。

语法:Buffer(BufferSize){ByteList or String}

用法:声明一个大小为BufferSize的字节数组,可选的初始值是字符串或者字节列表

语法:Method(MethodName,NumArgs,SerializeRule,SyncLevel,ReturnType,ParameterTypes){TermList}

用法:MethodName指定控制方法的名字,类型是名字字符串,NumArgs是可选参数,表示传递到方法的参数个数。如果未指定此参数,默认值是0,最多可以传递7个参数,Arg0~Arg6。SerializeRule是可选参数,用来定义是否需要串行执行此方法,取值为Serialized或者NotSerialized。串行执行的方法不能被其他线程重入,默认Not。SyncLevel是可选参数,指定同步级别0-15,未指定的话,默认为0。ReturnType指定此方法返回的对象类型,ParameterTypes指定的是方法参数的类型。

语法:Name(ObjectName,Object)

用法:创建一个名字为ObjectName的新对象

语法:Function(FunctionName,ReturnType,ParameterTypes){TermList}

用法:Function声明了一个命名对象数组,包含了一系列操作符。这些操作符一起表示了一个控制方法,控制方法是一个进程,可以被调用来执行计算等。Function打开一个名字范围,系统软件通过顺序的执行对象数组中的操作符来执行一个控制方法,Function等价于指定NotSerialized参数的Method。

Function (EXAM,IntObj,{StrObj,{IntObj,StrObj}})
{Name(Temp,"")Store(Arg0,Temp)Return (Sizeof(Concatenate(Arg1,Temp)))
}等价于:Method (EXAM,2,NotSerialized,0,IntObj,{StrObj,{IntObj,StrObj}}){......}

语法:PowerResource(ResourceName,SystemLevel,ResourceOrder){ObjectList}

用法:PowerResource打开一个名字范围,ResourceName表示资源的名字,SystemLevel,值为0,即S0,1即S1,以此类推。ResourceOrder表示数值常量,每个电源资源都有一个唯一的该参数值

语法:RawDataBuffer(RDBufferSize){ByteList}

用法:声明一个大小为RDBufferSize的数组

语法:ThermalZone(ThermalZoneName){ObjectList}

用法:声明一个名字为ThermalZoneName的散热区对象,系统中的每个散热区都需要有一个唯一的ThermalZoneName,散热区可以被声明在\_SB范围中名字空间的任何位置,也可以被声明在\_TZ范围中,但不能同时在两个范围中定义。

语法:Alias(SourceObject,AliasObject)

用法:创建一个名字为AliasObject的新对象,在名字空间中,SourceObject必须已经存在,AliasObject只是SourceObject的别名

语法:OperationRegion(RegionName,RegionSpace,Offset,Length)

用法:声明一个名字为RegionName、类型为RegionSpace的操作区域,一个操作区域是一类数据对象,对此数据对象的读或者写操作在某个硬件空间中执行

RegionSpace:SystemMemory,SystemIo,PCI_Config,EmbeddedConfig,SMBus,SystemCMOS,PCIBARTarget,IPMI,GeneralPurposeIo

语法:Field(RegionName,AccessType,LockRule,UpdateRule) {FieldUnitList}

用法:声明一系列命名的数据对象,其数据值是更大对象中的字段。AccessType定义默认的访问宽度,其值为AnyAcc、ByteAcc、WordAcc、DWordAcc或者QWordAcc,LockRule是一个标志,用来表示在访问字段时是否使用全局锁,值为Lock或者NoLock,UpdateRule用来指定如何对待字段中未改变位,其值未Preserve、WriteAsOnes或者WriteAsZeros

语法:Offset(ByteOffset)

用法:Offset操作符在字段单元列表中被用来指定下一个定义的字段单元在此操作区域中的字节偏移,可用来代替定义必须跳过的位长度,所有偏移都基于起始地址,从零开始。


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部