【问题标题】:Generate and handle software interupt产生和处理软件中断
【发布时间】:2014-11-19 11:24:03
【问题描述】:

有人可以告诉我如何在 Linux 下生成软件中断,然后用 request_irq 处理它吗?

或许这是不可能的。

【问题讨论】:

  • 你为什么要问?在应用端,为什么不能使用信号?
  • 信号是 linux 用户空间中的软件中断。
  • 最终我想在 qemu 中将中断从主机系统传递到客户系统。这是为了测试和教育目的。
  • 什么架构?在 x86 上,您使用 int 指令生成软件中断。例如,int 0x80 是您进行旧式系统调用的方式。
  • 一般来说,中断处理程序是内核的一部分。跳转到您自己的代码只是一个函数调用。你真正想解决什么问题?

标签: c linux operating-system arm embedded


【解决方案1】:

您可以使用 softirq 代替。 你可以通过编辑 include/linux/interrupt.h 来定义你的 sofirq。 然后使用函数 rasie_softirq() 而不是 reuqest_irq(),这 通知内核有softirq需要处理。然后内核将 在软件中断上下文中的适当位置执行它。

示例 API

1. open_softwareirq();
2. raise_softirq();

【讨论】:

    猜你喜欢
    • 2013-12-24
    • 2017-03-22
    • 1970-01-01
    • 1970-01-01
    • 2010-11-16
    • 2018-09-21
    • 1970-01-01
    • 2010-11-05
    • 2012-07-05
    相关资源
    最近更新 更多