待机唤醒速度慢的跟踪及解决历程

系统 1697 0

  这两天又接到一个Bug:大家都抱怨待机唤醒的速度太慢。首先我们假定应用程序没有这么大的功力来影响系统,主要从驱动方面入手。当然主要是要找出是哪个模块在待机和唤醒时比较慢,有以前编译PM模块的经验这个问题变得很简单:在PM调用SetDevicePower设置各驱动的电源状态时计算一下实际花了多少时间。经统计发现NLED和AUDIO驱动都比较慢,花费300ms以上,而且AUDIO驱动在进D3和D4状态时都各花了300ms。

  经过与模块的维护者讨论发现AUDIO驱动在待机时会先暂停Media player,并等待300ms以确保Media player停止。而且比较致命的是它在进D3和D4时都做了这个事情,这个很好解决,先去掉延时,由此造成的问题用其它方法解决。

  而NLED驱动因为进D4状态时LED可能还在闪烁,所以要给负责闪烁的线程一个信号,然后等待线程停止,以保证待机时LED是不亮的。因为负责闪烁的线程有好几次Sleep,所以进D4时使用了Sleep 300ms来保证进入D4状态时负责闪烁的线程已经停止。而这严重影响了系统的待机时间。现在将Sleep改成有限时间的WaitForSingleObject,这样进入D4时直接设置事件,就可以激活线程,从而不需要花费太多的时间来等待线程停止。

 

待机唤醒速度慢的跟踪及解决历程


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论