1.11.1、低功耗-wakeup events framework

本文详细介绍了Linux内核中的设备唤醒(wakeup events)框架,重点探讨了SYSFS接口在休眠调试中的作用,以及设备电源管理的相关结构,如dev_pm_info结构体和设备power目录下的相关文件。此外,还分析了设备wakeup属性的添加以及wakeup_active_count节点的内容。
摘要由CSDN通过智能技术生成

1、SYSFS接口

终端目录:/sys/kernel/debug/wakeup_sources调试可以参考:休眠调试篇
为了方便查看系统的wakeup sources,此文件记录了系统的唤醒源的详细信息。
 

name                                    active_count    event_count     wakeup_count    expire_count    active_since    total_time   max_time        last_change     prevent_suspend_time

2、Device power

2.1、device中的dev_pm_info结构体

可以唤醒系统的只有设备(struct device),但并不是每个设备都具备唤醒功能,那些具有唤醒功能的设备称作wakeup source。
文件: kernel/include/llinux/device.h

struct device {
    ...
    struct dev_pm_info  power;
    ...
}

struct device结构涉及到一个struct dev_pm_info类型的power变量:文件: kernel/include/llinuxl/pm.h
 

struct dev_pm_info {
    pm_message_t        power_state;
    unsigned int        can_wakeup:1;
    ...
#ifdef CONFIG_PM_SLEEP
    struct list_head    entry;
    struct completion   completion;
    struct wakeup_source    *wakeup;
    bool            wakeup_path:1;
    bool            syscore:1;
#else
    unsigned int        should_wakeup:1;
#endif
    ...
}

can_wakeup,标识本设备是否具有唤醒能力。只有具备唤醒能力的设备,才会在sysfs中有一个power目录。这个属性device 驱动可以通过device_may_wakeup 更改:
 

static inline bool device_may_wakeup(struct device *dev)
{
    return dev->power.can_wakeup && !!dev->power.wakeup;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值