【问题标题】:How do I kill user applications from an IRQ handler?如何从 IRQ 处理程序中终止用户应用程序?
【发布时间】:2012-02-18 03:05:53
【问题描述】:

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

谁能推荐一个完成此任务的好方法?我很想通过向他们发送信号来正确杀死我的用户空间应用程序,以便他们可以进行闪存写入。我该怎么做呢?我想,作为替代方案,我可以有一个高优先级进程,等待我的中断生成的信号量......我有什么选择?提前致谢!

【问题讨论】:

    标签: linux-kernel irq


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 2012-04-30
      • 1970-01-01
      • 2012-11-26
      • 2021-11-13
      • 2016-09-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多