如何从IRQ处理程序中删除用户应用程序?

时间:2012-02-17 18:14:04

标签: linux-kernel irq

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

有人可以推荐一个很好的方法来实现这个目标吗?我希望通过向用户空间应用程序发送信号来正确杀死它们,以便他们可以执行闪存写入。我该怎么做呢?我想,作为一种替代方案,我可以拥有一个高优先级的进程,等待我的中断产生的信号量......我的选择是什么?提前谢谢!

1 个答案:

答案 0 :(得分:1)

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

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