我正在开发一个嵌入式Linux系统,我需要在特定的IRQ处理程序运行时关闭系统。我没有很多时间(几十毫秒)。我正在使用emergency_restart(),但我现在需要执行一些工作(将关闭相关信息写入闪存),这是因为闪存驱动程序不支持它而无法从中断上下文中完成。
有人可以推荐一个很好的方法来实现这个目标吗?我希望通过向用户空间应用程序发送信号来正确杀死它们,以便他们可以执行闪存写入。我该怎么做呢?我想,作为一种替代方案,我可以拥有一个高优先级的进程,等待我的中断产生的信号量......我的选择是什么?提前谢谢!
答案 0 :(得分:1)
这正是信号的用途。如果其中一个现有信号没有意义(参见man 7 signal
),请使用用户可定义的信号之一:
#define SIGUSR1 10 /* User-defined signal 1 (POSIX). */
#define SIGUSR2 12 /* User-defined signal 2 (POSIX). */