Power Management Framework
后台进程powerd(1M)作为一个service,在监控着整个系统的power consumption。PM
Framework为这个监控程序和设备驱动的通信提供了接口。
1.设备级:针对个别设备。设备驱动使用统一的模型;配置工具有dtpower(1M),power.conf(4), pmconfig(1M);
在driver和framework之间有标准的DDI接口。
2.系统级:针对整个系统,需要系统cpr(7)模块的支持。系统在被power
down之前,将所有的内核线程和用户进程停下来,并且将当前状态存储下来。在系统power
up时,还必须重启这些进程和线程,恢复之前的系统状态。需要指出的是,系统级的PM目前只在SPARC上实现了。x86/x64上的PM很快就会集成到
Solaris Nevada中。管理工具仍然是pmconfig(1M),power.conf(4).
判断一个设备是否支持PM,可以在prtconf -v -D的输出中查看这个设备是否有“pm-components”属性,如有,则支持。
pm(7D)--Power Management driver.
应用程序可以通过这个driver直接控制某个设备的PM。如果需要对某个设备进行PM测试,要在power.conf中设置设备shutdown的门限
时间,让这个设备在一个随机时延之后进行某种动作,以便唤醒它的driver,通过读去/dev/pm获得系统当前所有设备的PM状态。如此循环,从而检
测这个设备的driver是否能够支持正常的PM。
sys-suspend(1M) -- suspend or shutdown the system.
uadmin(1M)--manage the system.
以上这两个命令都可以用于系统的PM,也称为CPR(CheckPoint-Resume).
使用这两个命令将系统置于suspend状态,把系统时钟tod(SPARC
only)设为定时模式,在某个时间段之后把系统唤醒。如此循环,可以测试系统的PM。Driver
在PM和CPR时,使用不同的入口点,所以对于一个新driver来说,这两个方面都必须要测到。tod的访问方法没有man
page,可以参考http:
//cvs.opensolaris.org/source/xref/on/usr/src/uts/sun4/io/tod.c
Driver PM entry point is power(9f), while driver's CPR entry point is
DDI_RESUME/DDI_SUSPEND in attach(9f)/detach(9f).
参见 Writing Device Driver中Power Management一章。
阅读(5064) | 评论(0) | 转发(0) |