Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1295518
  • 博文数量: 168
  • 博客积分: 2124
  • 博客等级: 大尉
  • 技术积分: 2590
  • 用 户 组: 普通用户
  • 注册时间: 2011-09-16 23:51
文章分类

全部博文(168)

文章存档

2014年(6)

2013年(74)

2012年(71)

2011年(17)

分类: LINUX

2012-08-09 19:31:40

要认识device_init_wakeup(),首先需要知道两个概念:can_wakeup和should_wakeup。这两个家伙从哪里来的?看struct device结构体,里面有一个成员struct dev_pm_info power,来看一看struct dev_pm_info,来自include/linux/pm.h文件:

  1. 265 struct dev_pm_info {  
  2. 266     pm_message_t            power_state;  
  3. 267     unsigned                can_wakeup:1;  
  4. 268 #ifdef  CONFIG_PM  
  5. 269         unsigned                should_wakeup:1;  
  6. 270     pm_message_t            prev_state;  
  7. 271     void                    * saved_state;  
  8. 272     struct device           * pm_parent;  
  9. 273     struct list_head        entry;  
  10. 274 #endif  
  11. 275 };  

这些都是电源管理部分的核心数据结构,显然,我们没有必要深入研究,只是需要知道,can_wakeup为1时表明一个设备可以被唤醒,设备驱动为了支持Linux中的电源管理,有责任调用device_init_wakeup()来初始化can_wakeup。而should_wakeup则是在设备的电源状态发生变化时被device_may_wakeup()用来测试,测试它该不该变化。因此,can_wakeup表明的是一种能力,should_wakeup表明的是有了这种能力以后去不去做某件事。


转自

阅读(4535) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~