在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

            linux電源管理

            作者: 時間:2008-07-23 來源:網(wǎng)絡(luò) 收藏

            本文引用地址:http://www.biyoush.com/article/258650.htm  5.對APM進行編程

              下面介紹在實模式中和在linux下使用APM功能的編程方法:


              由于APM是由bios提供的,我們可以直接在實模式(如DOS下)調(diào)用int 15軟中斷來進行操作。

              在實模式下APM的standby、suspend和Poweroff功能分別可以通過下面的匯編語言實現(xiàn):

              standby:

              mov ax, 5307H

              mov bx, 1

              mov cx, 1

              int 15H

              suspend:

              改成 mov cx,2

              poweroff:

              改成 mov cx,3

              需要注意的一件事是在linux內(nèi)核中沒有使用和實模式的一樣的方法來調(diào)用int 15H中斷,而是直接調(diào)用了bios的保護模式接口。所以我們?nèi)绻薷牧薭ios中的apm相關(guān)代碼并且沒有處理好保護模式接口的問題,可以出現(xiàn)這樣的情況:在實模式DOS下使用apm功能一切正常,但是在linux下調(diào)用apm功能發(fā)生內(nèi)核一般保護性錯誤。

              在linux下我們可以通過對apm_bios設(shè)備的操作來完成同樣的功能。

              下面的代碼可以實現(xiàn)APM的suspend功能,等價于apm -s

              #include stdio.h>

              #include unistd.h>

              #include stdlib.h>

              #include asm/fcntl.h>

              #include linux/types.h>

              #include sys/types.h>

              #include apm.h

              int main()

              {

               int fd, res;

               fd = open(/dev/apm_bios, O_RDWR);

               if (fd 0) {

               printf(open /dev/apm_bios error!n);

               exit(-1);

               }

               sync();

               res = ioctl(fd, APM_IOC_SUSPEND, NULL);

               if (res != 0) {

               printf(ioctl error!n);

               close(fd);

               exit(-1);

               }

               close(fd);

               return 0;

              }

              如果我們把上面程序中的SUSPEND改成STANDBY,我們就同樣實現(xiàn)了apm -S的功能。

              在linux下POWEROFF操作有其獨特的流程,最后根據(jù)內(nèi)核中apm或者ACPI的存在情況來執(zhí)行相應(yīng)不同的流程來關(guān)閉電源。請參見linux內(nèi)核源碼,我寫的《linux關(guān)機重啟流程分析》中也有一定的介紹。

              6.常見問題(FAQ)

              1)我的系統(tǒng)不能被suspend,這是怎么回事呢?

              系統(tǒng)在suspend之前會向所有的驅(qū)動發(fā)消息,如果這個時候某個傲慢的驅(qū)動返回了一個-EBUSY,那么這次suspend的企圖就被這個驅(qū)動否決了,你只有過一會再試,如果這個驅(qū)動總是否決(真是蠻橫,不過它也許有自己的苦衷也說不定),你就永遠都無法suspend了。

              2)我按下系統(tǒng)的PowerOFF開關(guān),在ATX的主板上,系統(tǒng)就會自動關(guān)機了,這個處理流程是什么樣子的呢?

              在內(nèi)核APM模塊中建立了一個核心態(tài)線程不停的監(jiān)測系統(tǒng)狀態(tài),用戶的關(guān)機動作在這里被截獲后處理。詳細的流程可以參見本人的《linux關(guān)機重啟流程分析》。

              3)linux中的文檔在哪里?

              在linux/Documentation目錄下的pm.txt中詳細定義了linux驅(qū)動接口實現(xiàn)方式,并且有詳細的例子,apm和ACPI的實現(xiàn)流程需要參見linux源碼的實現(xiàn)。

              7.總結(jié)

              linux中的電源管理是發(fā)展中的代碼。從目前的趨勢來看ACPI終將取代APM。現(xiàn)在使用APM則是較為成熟和穩(wěn)妥的方案。我們?nèi)绻F(xiàn)在編寫驅(qū)動應(yīng)該嚴格遵守文檔中的pm.txt所規(guī)定的接口,這樣可以使我們的驅(qū)動有較強電源管理的適應(yīng)性和穩(wěn)定性。

            linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)

            上一頁 1 2 下一頁

            關(guān)鍵詞: Linux 電源管理

            評論


            相關(guān)推薦

            技術(shù)專區(qū)

            關(guān)閉