Linux acpi off簡(jiǎn)介
Linux acpi off – the Advanced Configuration & Power Interface. ACPI是OS,BIOS和硬件之間的抽象層。它允許OS和平臺(tái)獨(dú)立的發(fā)展,比如新的OS可以控制老的平臺(tái),老的OS也可以控制新的平臺(tái)而不需要額外的修改。
ACPI寄存器,描述了和ACPI相關(guān)的寄存器。OS可以直接從ACPI表中取得這些寄存器的信息,因此不必了解具體的硬件配置。
AML代碼,一種類(lèi)C的代碼。由BIOS提供,OS的AML解釋器(在Linux中叫ACPI CA)解釋執(zhí)行這些代碼。這是ACPI抽象層的關(guān)鍵,下面會(huì)詳細(xì)介紹。
配置信息,ACPI包含的配置信息很多,比如多處理器配置信息(MADT)、NUMA配置信息(SRAT、SLIT)、高精度定時(shí)器(HPET)等。
AML代碼是抽象的關(guān)鍵。為了消除平臺(tái)相關(guān)性,BIOS把平臺(tái)相關(guān)的操作用AML代碼來(lái)實(shí)現(xiàn)。OS不需要知道平臺(tái)細(xì)節(jié),它只是解釋執(zhí)行這些代碼,在解釋執(zhí)行的過(guò)程中平臺(tái)相關(guān)的操作就被執(zhí)行了。ACPI規(guī)范定義了一些標(biāo)準(zhǔn)的AML函數(shù),OS解釋執(zhí)行一個(gè)這樣的標(biāo)準(zhǔn)函數(shù)就可以實(shí)現(xiàn)特定的功能。舉個(gè)例子:
- Scope (_SB.PCI0.LPC)
- {
- OperationRegion (LPCS, PCI_Config, 0x00, 0x0100)
- Field (LPCS, AnyAcc, NoLock, Preserve)
- {
- Offset (0x60),
- PIRA, 8,
- }
- }
- Device (LNKA)
- {
- Method (_DIS, 0, NotSerialized)
- {
- Or (\_SB.PCI0.LPC.PIRA, 0x80, \_SB.PCI0.LPC.PIRA)
- }
- }
比如我們想禁止LNKA設(shè)備,Linux acpi off規(guī)范定義了OS必須執(zhí)行此設(shè)備的_DIS函數(shù)。從硬件的角度來(lái)講,禁止LNKA設(shè)備需要將某個(gè)PCI設(shè)備的配置空間的寄存器0×60的最高位置上。OS不需要知道硬件的細(xì)節(jié),它解釋執(zhí)行_DIS函數(shù)即可。上面的代碼就是AML代碼,由BIOS提供,語(yǔ)句‘Or (\_SB.PCI0.LPC.PIRA, 0×80, \_SB.PCI0.LPC.PIRA)’實(shí)際上就是給寄存器\_SB.PCI0.LPC.PIRA置上最高位, 而PIRA就是PCI設(shè)備LPC的配置空間的寄存器0×60。從此段代碼我們可以明顯的看出BIOS以AML代碼的形式隱藏(抽象)了硬件的細(xì)節(jié),從而使得OS看到的是一個(gè)平臺(tái)無(wú)關(guān)的硬件。
更多的Linux acpi off預(yù)定義的函數(shù)可以在ACPI規(guī)范中找到,可以在http://www.acpi.info下載最新的規(guī)范。
Linux acpi off實(shí)現(xiàn)中使用的AML解釋器是ACPICA -the ACPI Component Architecture. 可以從http://www.intel.com/technology/iapc/acpi/downloads.htm得到。它包含一個(gè)AML解釋器(Linux kernel包含了這個(gè)解釋器,很多其他OS也是如此,比如BSD、opensolaris等),一個(gè)編譯器(將ACPI Source Language (ASL)編譯成AML代碼)和一些測(cè)試工具。
最新的Linux acpi off的代碼可以使用git在http://www.kernel.org/git/?p=linux/kernel/git/lenb/linux-acpi-2.6.git得到。
【編輯推薦】
- Linux 查看磁盤(pán)空間實(shí)現(xiàn)代碼介紹
- Linux操作系統(tǒng)需要微軟的十大幫助
- 探尋Linux到底需要多低的配置
- Linux測(cè)試工具tcpdump監(jiān)視TCP/IP連接命令介紹
- Linux流量控制實(shí)例應(yīng)用介紹