#没触发中断但是中断函数打印了
local_irq_disable();
// 请求线程化的中断处理
/*ret = devm_request_threaded_irq(&pdev->dev, irq, NULL, my_interrupt_handler,
IRQF_TRIGGER_RISING, "my_char_device", gpio_pin);*/
ret = request_irq(irq, my_interrupt_handler, IRQF_TRIGGER_FALLING, "my_char_device", gpio_pin);
if (ret) {
printk(KERN_ERR "Failed to request IRQ.\n");
return ret;
}
// 使能中断
local_irq_enable();
我看了一下,没看出这个代码有什么问题的啊,你在gpt跑一下,看有什么错误。
不知道你这个问题是否已经解决, 如果还没有解决的话:中断的处理过程一般来说分以下几部分:
而在执行完程序之后,这个时候我们需要用到iret
命令返回。它会从栈中弹出数据到cs、eip、eflags等等。