IRQF_NO_SUSPEND和enable_irq_wake的疑问
本文是原「蜗窝讨论区」的历史存档(2018-10-15),来自版块「Linux kernel技术问答」,共 2 帖。讨论区已停止服务,此处仅供查阅。
wowo你好,之前在读《系统休眠(System Suspend)和设备中断处理》这一篇文章的时候,有一点非常的疑惑,希望你能指点迷津。 文章中说IRQF_NO_SUSPEND标志并不能唤醒系统,只是保证suspend的过程中该中断enable,并且可以执行handler。 而如果要唤醒系统则必须使用API:enable_irq_wake将这个中断标记为唤醒源,而且enable_irq_wake和IRQF_NO_SUSPEND不能同时使用。
我的疑惑是: 1.对于IRQF_NO_SUSPEND,可以执行interrupt handler,但是系统都无法唤醒,那么内核的调度应该也没有起来,此时进程都冻结了,谁来执行这个handler呢? 2.假如这个handler被执行了,但是系统没起来,也做不了什么事情啊 对这一块很模糊,想不清感觉睡觉都还惦记这个事情,还请wowo和linuxer指点下
leo.liu 写道: wowo你好,之前在读《系统休眠(System Suspend)和设备中断处理》这一篇文章的时候,有一点非常的疑惑,希望你能指点迷津。 文章中说IRQF_NO_SUSPEND标志并不能唤醒系统,只是保证suspend的过程中该中断enable,并且可以执行handler。 而如果要唤醒系统则必须使用API:enable_irq_wake将这个中断标记为唤醒源,而且enable_irq_wake和IRQF_NO_SUSPEND不能同时使用。
我的疑惑是: 1.对于IRQF_NO_SUSPEND,可以执行interrupt handler,但是系统都无法唤醒,那么内核的调度应该也没有起来,此时进程都冻结了,谁来执行这个handler呢? 2.假如这个handler被执行了,但是系统没起来,也做不了什么事情啊 对这一块很模糊,想不清感觉睡觉都还惦记这个事情,还请wowo和linuxer指点下
这个东西的重点在于:“suspend的过程中该中断enable,并且可以执行handler”。 也就是说,在suspend过程中,如果有紧急情况,是可以反悔的。 当然了,如果真的suspend了,这个标志就无能为力了。
