Chinaunix首页 | 论坛 | 博客
  • 博客访问: 473127
  • 博文数量: 58
  • 博客积分: 6047
  • 博客等级: 准将
  • 技术积分: 838
  • 用 户 组: 普通用户
  • 注册时间: 2008-01-06 21:05
文章分类

全部博文(58)

文章存档

2009年(24)

2008年(34)

我的朋友

分类:

2008-12-23 00:15:44

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一章。
阅读(5028) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~