【发布时间】:2016-07-29 08:14:12
【问题描述】:
我有一个 Linux 守护程序,我希望收到有关标准电源状态更改的通知:睡眠/恢复、休眠。 现在我正在使用 pm-utils 钩子,但我想知道是否有类似于 udev 的东西(通过注册您可以接收有关设备的通知:添加/删除/更改/移动)。 acpid 似乎旨在通知用户空间程序 ACPI 事件。我不知道它是否可以用于守护进程。
【问题讨论】:
我有一个 Linux 守护程序,我希望收到有关标准电源状态更改的通知:睡眠/恢复、休眠。 现在我正在使用 pm-utils 钩子,但我想知道是否有类似于 udev 的东西(通过注册您可以接收有关设备的通知:添加/删除/更改/移动)。 acpid 似乎旨在通知用户空间程序 ACPI 事件。我不知道它是否可以用于守护进程。
【问题讨论】:
据我所知,没有发送睡眠/唤醒相关事件的 uevent 广播器。但是您可以自己编写一个驱动程序发送一个 uevent,该驱动程序在收到PM_SUSPEND_PREPARE/PM_POST_SUSPEND 后立即生成并发送一个。为此,您应该实现一个接收 PM_* 通知的通知块,并使用register_pm_notifier(&your_notification_block) 将其注册到 PM 通知程序链。这意味着您可以编写一个转换器驱动程序,将PM_* 通知转换为一个uevent。
但是,当系统进入休眠状态时,内核会在挂起之前冻结所有进程。这意味着,尽管您的守护进程收到了 uevent,但没有时间做您想做的事情。
【讨论】: