真心请教Linux kernel进入Suspend问题

唐勉的技术博客 2011-11-10 08:11:12
我想在linux kernel进入suspend之前,应用程序可以做点事情,不知道是否可行?
目前想了一个方法,linux kernel进入suspend之前,好像会有PM_SUSPEND_PREPARE事件,是否可以在这里给上层应用发个消息,然后等待上层应用回复后,再继续执行?

请大家指点,谢谢!
...全文
372 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
现在WinCE搞得少,Linux搞得多了。顺便说一句,问题已解决,通过向pm_notifier注册函数并响应PM_SUSPEND_PREPARE事件来实现。
lvyinghong 2011-11-11
  • 打赏
  • 举报
回复
看代码内核驱动收到PM_SUSPEND_PREPARE 通知的时候用户进程还没被挂起的。
也许真的是可以在这里个用户进程发信号,等待用户进程把事情,再继续,这通知处理里面是可以block住的,也就是说可以等待用户应用。可以试一下
deep_pro 2011-11-11
  • 打赏
  • 举报
回复
在纯linux,以2.6.36为例,每当linux要进入suspend,会执行
suspend_prepare()->pm_notifier_call_chain(PM_SUSPEND_PREPARE);
这个pm_notifier_call_chain属于内核自定义的内核通知链。所有需要支持SUSPEND的驱动,都会用register_pm_notifier把自己注册到这条通知连上。
这样pm_notifier_call_chain就能把PM_SUSPEND_PREPARE事件通知到每一个驱动。
但是我在pm_notifier_call_chain里没有找到对应用程序有什么统一的通知。所以我觉得你要在suspend_prepare()里对某一个进程发自定义的通知是很容易的,但不能对所有进程都发通知,我想linux本生没有这样的机制。

android对电源管理作了较多修改,这个我不知道。
Wenxy1 2011-11-11
  • 打赏
  • 举报
回复
发送一个信号给应用即可。
需要注意,所有的硬件是否支持suspend和resume。
  • 打赏
  • 举报
回复
非常感谢楼上两位的回复,这个功能希望在Linux和Android上面都能支持。内核在suspend之前,好像还会做一些事情,不知道是否由接口留给上层,内核代码是可以修改的。不知道还有其他建议么?
jiahehao 2011-11-11
  • 打赏
  • 举报
回复
可是,我觉得只有线程有suspend,内核是不会suspend的呀。如果你在线程suspend前通知一下用户空间的程序,倒是很容易的。
xqhrs232 2011-11-11
  • 打赏
  • 举报
回复
[Quote=引用楼主 nanjianhui 的回复:]
我想在linux kernel进入suspend之前,应用程序可以做点事情,不知道是否可行?
目前想了一个方法,linux kernel进入suspend之前,好像会有PM_SUSPEND_PREPARE事件,是否可以在这里给上层应用发个消息,然后等待上层应用回复后,再继续执行?

请大家指点,谢谢!
[/Quote]

现在没搞WINCE?怎么去搞LINUX去了?
deep_pro 2011-11-10
  • 打赏
  • 举报
回复
请先明确下是纯linux还是android的哪个版本
如果允许该内核代码的话,这样的功能小意思了

4,465

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 内核源代码研究区
社区管理员
  • 内核源代码研究区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧