123

event_count,wakeup source产生的wakeup event的个数

wakeup_count,wakeup source在suspend过程中产生wakeup event

 

在drivers\base\power\wakeup.c中,有几个比较重要的计数器,是wakeup events framework的实现基础,包括:
1)registered wakeup events和saved_count
记录了系统运行以来产生的所有wakeup event的个数,在wakeup source上报event时加1。
这个counter对解决用户空间同步问题很有帮助,因为一般情况下(无论是用户程序主动suspend,还是auto sleep),由专门的进程(或线程)触发suspend。当这个进程判断系统满足suspend条件,决定suspend时,会记录一个counter值(saved_count)。在后面suspend的过程中,如果系统发现counter有变,则说明系统产生了新的wakeup event,这样就可以终止suspend。该功能即是wakeup count功能。
2)wakeup events in progress
记录正在处理的event个数。
当wakeup source产生wakeup event时,会通过wakeup events framework提供的接口将wakeup source设置为activate状态。当该event处理结束后,设置为deactivate状态。activate到deactivate的区间,表示该event正在被处理。
当系统中有任何正在被处理的wakeup event时,则不允许suspend。如果suspend正在进行,则要终止。

思考一个问题:registered wakeup events在什么时候增加?答案是在wakeup events in progress减小时,因为已经完整的处理完一个event了,可以记录在案了。

drivers/base/power/sysfs.c
文件有一堆的wakeup相关的sys接口,其中一个叫wakeup_count的,它其实获取的是dev->power.wakeup->event_count值,
注意区分与wakeup source中的wakeup_count。

一般休眠状态产生的事件叫一个wakeup event,那么event_count和wakeup_count的区别在哪?
registered wakeup events、wakeup events in progress增加减少时机?
last_time是上次active的时间,那么什么是active的时间?如果休眠,然后唤醒,算起始active时间,那么本身唤醒状态下来wakeup event
算不算active时间?

转载于:https://www.cnblogs.com/mo99/p/6686860.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值