irq 1 ハンドラを置き換える単純なモジュールを作成しようとしています。そして、常に次のエラーが発生します:「-1 デバイスまたはリソースがビジーです」。それを修正する方法はありますか?これが私のコードです:
#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/sched.h>
#include <linux/workqueue.h>
#include <linux/interrupt.h>
#include <asm/io.h>
irqreturn_t myhandler(int irq, void *dev_id, struct pt_regs *regs)
{
printk(KERN_ALERT"\n\nMy interrupt handler\n\n");
return IRQ_HANDLED;
}
int init_module()
{
int res;
free_irq(1, NULL);
res = request_irq(1, (void*)myhandler,0, "my_handler", (void*)(myhandler));
return res;
}
void cleanup_module()
{
free_irq(1, NULL);
}
MODULE_LICENSE("GPL");
たぶん、誰が間違っていると言うことができます。PS。私は 2.6.39.3 カーネルで作業しています。