【发布时间】:2014-11-20 04:56:17
【问题描述】:
我编写了一个简单的字符驱动程序,并在一个 gpio 引脚上请求 IRQ,并为它编写了一个处理程序。
err = request_irq(irq, irq_handler,IRQF_SHARED | IRQF_TRIGGER_RISING, INTERRUPT_DEVICE_NAME, raspi_gpio_devp);
static irqreturn_t irq_handler(int irq, void *arg);
现在从理论上我知道在中断中断控制器时告诉处理器调用 do_IRQ() 它将检查 IDT 并为此行调用我的中断处理程序。
内核如何知道中断处理程序是针对这个特定设备文件的
我也知道中断处理程序不在任何进程上下文中运行。但是,假设我正在访问在处理程序范围之外声明的任何变量,静态全局标志 = 0,在处理程序中我将标志 = 1 表示发生了中断。该变量在进程上下文中。所以我很困惑这个处理程序如何不在任何进程上下文中修改进程上下文中的变量。
谢谢
【问题讨论】:
标签: linux-kernel kernel linux-device-driver interrupt interrupt-handling