ACPId服務(wù)工作原理詳解
通過掛起不必要的設(shè)備、降低CPU的頻率或者其它方法,可以減少能量的消耗,達到省電的目的。電源管理實際上是一個系統(tǒng)工程,從應(yīng)用程序到內(nèi)核框架,再到設(shè)備驅(qū)動和硬件設(shè)備,都要參與進來,才能達到電源管理的***化。本文介紹一下ACPId服務(wù)的工作原理。
ACPId服務(wù)是AdvancedConfigurationandPowerInterface縮寫,acpid中的d則代表daemon。Acpid是一個用戶空間的服務(wù)進程,它充當(dāng)Linux內(nèi)核與應(yīng)用程序之間通信的接口,負(fù)責(zé)將kernel中的電源管理事件轉(zhuǎn)發(fā)給應(yīng)用程序。
ACPId服務(wù)與內(nèi)核的通信方式:acpid用poll函數(shù)掛在/proc/acpi/event文件上。內(nèi)核在drivers/acpi/event.c中實現(xiàn)了該文件的接口,一旦總線事件列表(acpi_bus_event_list)上有電源管理事件發(fā)生,內(nèi)核就會喚醒掛在/proc/acpi/event上的acpid,acpid再從/proc/acpi/event中讀取相應(yīng)的事件。acpid與應(yīng)用程序的通信方式有兩種,
其一是通過本地socket,其文件名為/var/run/acpid.socket,應(yīng)用程序只要連接到這個socket上,不用發(fā)送任何命令就可以接收到acpid轉(zhuǎn)發(fā)的電源管理事件。
其二是通過配置文件。在acpid收到來自內(nèi)核的電源管理事件時,根據(jù)配置文件中的規(guī)則執(zhí)行指定的命令。
ACPId服務(wù)配置文件在/etc/acpi/events/目錄下,
下面是一個示例:
event=button/power.*action=/sbin/shutdown-hnow
ACPId服務(wù)事件的格式為:
device_classbus_idtypedata。device_class和bus_id是字符串,type和data是十六制整數(shù)。在配置文件中可以使用通配符,來匹配指定的事件。
出處:http://blog.csdn.net/absurd/(T115)
【編輯推薦】