分享
 
 
 

Linux电源管理研究笔记—gnome-power-manager的工作原理

王朝system·作者佚名  2006-09-15
窄屏简体版  字體: |||超大  

Linux电源管理研究笔记—gnome-power-manager的工作原理

转载时请注明出处:http://blog.csdn.net/absurd/

在手持设备设计中,电源管理历来为重要的研究课题之一。我们日常所说的省电就属于电源管理的范畴,这也是我们最关心的一个部分。通过挂起不必要的设备、降低CPU的频率或者其它方法,可以减少能量的消耗,达到省电的目的。电源管理实际上是一个系统工程,从应用程序到内核框架,再到设备驱动和硬件设备,都要参与进来,才能达到电源管理的最优化。本文介绍一下gnome-power-manager的工作原理。

为什么要研究gnome-power-manager呢?我们说过,电源管理是一个系统工程,不但与内核有关,与应用程序也有很大关系,而gnome-power-manager其名称就暗示了它是与电源管理关系最大的应用程序之一。研究gnome-power-manager的工作原理,我们可以更好的理解应用程序与底层电源管理服务之间的交互关系。

gnome-power-manager具有哪些功能呢?从官方网站上我们可以看到:

1. 电源状态。

2. 电源管理。

3. 设置电源选项。

交流电源选项:其中包括显示器/计算机进入休眠的时间、显示器的亮度和笔记本合上时的动作。

电池电源选项:其中包括显示器/计算机进入休眠的时间、显示器的亮度和笔记本合上时的动作。

常用选项:休眠的类型和panel上的通知区的行为。

通过以上几幅图片,我们已经了解到gnome-power-manager的基本功能,但这些功能都是从用户角度来看的。下面我们再从程序内部来看看,在gnome-power-manager的代码中,有一个名为gpm-manager.xml的文件,从其内容我们知道这是一个dbus服务对象接口定义,它实现了一个org.gnome.PowerManager接口,这个接口提供了基本的电源管理功能。在acpid一文中,我们说过acpid是内核与应用程序之间的接口,但是acpid对普通应用程序来说还是过于底层,而gnome-power-manager才是普通应用程序应该调用的接口。

gpm-manager.xml中定义的主要接口有:

1. GetLowPowerMode 是否使用了低耗能模式。

2. GetOnAc 是否使用的交流电源。

3. AllowedSuspend 能否挂起。

4. AllowedHibernate 能否睡眠。

5. AllowedShutdown 能否关机。

6. AllowedReboot 能否重起。

7. Hibernate 睡眠

8. Suspend 挂起

9. Shutdown 关机

10. Reboot 重起

11. GetDpmsMode 得到显示器电源管理模式。

12. SetDpmsMode 设置显示器电源管理模式。

13. Inhibit 禁用电源管理功能。比如文件管理在拷贝文件时,为了防止系统在此时挂起或者睡眠,可以暂时禁用电源管理,直到拷贝完成。

14. UnInhibit 恢复电源管理功能。

下面我们再看以上这些函数的实现方式,这才是我真正关心的。

1. GetLowPowerMode

这个函数实现很简单,只是一项简单的配置信息,通过gconf_client_get_bool获取GPM_PREF_AC_LOWPOWER或者GPM_PREF_BATTERY_LOWPOWER,这取决于当前的电源类型。

2. GetOnAc

通过向hal服务进程发送FindDeviceByCapability请求,可以得到是否支持交流电源的属性。然后发送GetPropertyBoolean(ac_adapter.present) 请求,可以得到交流电源是否存在。

3. AllowedSuspend

4. AllowedHibernate

以上函数都是通过向hal服务进程发送GetPropertyBoolean请求,得到对应的属性值。

5. AllowedShutdown

6. AllowedReboot

以上函数都是通过向hal服务进程发送IsUserPrivileged请求,查看当前用户是否具有权限决定。

7. Hibernate 睡眠

8. Suspend 挂起

9. Shutdown 关机

10. Reboot 重起

以上函数都是通过向hal服务进程发送相应请求来实现。请求分别为Hibernate、Suspend、Shutdown和Reboot。

11. GetDpmsMode 得到显示器电源管理模式。

12. SetDpmsMode 设置显示器电源管理模式。

以上函数都是通过X11的DPMS扩展实现的。当然X11只是封装了DPMS功能,真正的实现是在内核的显示驱动程序里。DPMS比较重要,因为显示设备通常是耗电大户,如果可能的话,我们会用专门一章来讲解。

13. Inhibit

14. UnInhibit

这两个函数的实现很简单:Inhibit把应用程序的dbus-connection(标识发送请求的应用程序)加入到一个链表中。UnInhibit则从该链表中删除应用程序的dbus-connection。如果该链表不为空,则禁用电源管理功能。

综上所述,gnome-power-manager即是一个直接面对最终用户的应用程序,也是一个中间层。作为中间层,它把hal和x11提供的底层细节封装起来了,同时为其它应用程序提供了更高层的服务接口。

~~end~

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有