在suspend的过程中,发生了一个唤醒事件(例如USB插入)
预期效果应该是:suspend被阻止
伪代码实现如下:
Usb_probe()//一般在probe函数中,
{
device_init_wakeup(usb->dev,1)//初始化一个wake up source
……
enable_irq_wake(usb_irq);//调用该接口enable的irq在suspend的时候,不会被disable掉
……
}
Usb_Irq_handler()
{
pm_stay_awake(usb->dev);//阻止系统进入suspend
…处理一些事情…
pm_relax(usb->dev);//解除阻止系统进入suspend的影响
}
具体的函数实现细节可参考源文件
Path: kernel/drivers/base/power/wakeup.c