Linux kernel 如何从IRQ处理程序中终止用户应用程序?

Linux kernel 如何从IRQ处理程序中终止用户应用程序?,linux-kernel,irq,Linux Kernel,Irq,我正在一个嵌入式Linux系统上工作,当一个特定的IRQ处理程序运行时,我需要关闭系统。我没有很多时间(几十毫秒)。我使用的是emergency_restart(),但我现在需要执行一些无法从中断上下文完成的工作(将关机相关信息写入闪存),因为闪存驱动程序不支持它 有人能推荐一个好的方法来实现这一点吗?我希望通过向我的用户空间应用程序发送一个信号,使它们能够进行闪存写入,从而正确地杀死它们。我该怎么做?我想,作为替代方案,我可以有一个高优先级的进程,等待我的中断生成的信号量。。。我有什么选择?提

我正在一个嵌入式Linux系统上工作,当一个特定的IRQ处理程序运行时,我需要关闭系统。我没有很多时间(几十毫秒)。我使用的是emergency_restart(),但我现在需要执行一些无法从中断上下文完成的工作(将关机相关信息写入闪存),因为闪存驱动程序不支持它


有人能推荐一个好的方法来实现这一点吗?我希望通过向我的用户空间应用程序发送一个信号,使它们能够进行闪存写入,从而正确地杀死它们。我该怎么做?我想,作为替代方案,我可以有一个高优先级的进程,等待我的中断生成的信号量。。。我有什么选择?提前谢谢

这正是信号的用途。如果其中一个现有信号没有意义(请参见
man 7信号
),请使用一个用户可定义的信号:

#define SIGUSR1         10      /* User-defined signal 1 (POSIX).  */
#define SIGUSR2         12      /* User-defined signal 2 (POSIX).  */