request_irq返回-22是什么回事

时间:2022-01-23 04:15:28
request_irq(button_irqs[i].irq,buttons_interrupt,IRQF_SHARED,button_irqs[i].name,(void *)i);
搞了好几天了,都没弄出来。求大牛帮忙!!

13 个解决方案

#1


参数不对

#2


哪个参数不对哈?求解

#3


看不出来,自己打印下各个参数比较下吧

#4


引用楼主 jiuge1989 的回复:
request_irq(button_irqs[i].irq,buttons_interrupt,IRQF_SHARED,button_irqs[i].name,(void *)i);
搞了好几天了,都没弄出来。求大牛帮忙!!

最后那个参数(void *)&i

#5


按楼上的应该不对,应该改成以下形式
request_irq(button_irqs[i].irq,buttons_interrupt,IRQF_SHARED,button_irqs[i].name,&button_irqs[i].name);

#6


request_irq(button_irqs[i].irq,buttons_interrupt,IRQF_SHARED,button_irqs[i].name,(void *)i);
的最后一个参数是buttons_interrupt函数的第二个参数。

#7


引用 4 楼 lq651659889 的回复:
引用楼主 jiuge1989 的回复:
request_irq(button_irqs[i].irq,buttons_interrupt,IRQF_SHARED,button_irqs[i].name,(void *)i);
搞了好几天了,都没弄出来。求大牛帮忙!!

最后那个参数(void *)&i


更改之后,返回却是-16.

#8


明显4楼那是有问题的,&i每次都一样。改成&button_irqs[i].name呢?

#9


-16表示Device or resource busy

可能的你的IRQ已经有其它内核代码已经申请了。

#10


引用 8 楼 ezword 的回复:
明显4楼那是有问题的,&i每次都一样。改成&button_irqs[i].name呢?


给buttons_interrupt传的是i,不是name.所以不能改为&button_irq[i].name

#11


引用 9 楼 zhangzhaocap 的回复:
-16表示Device or resource busy

可能的你的IRQ已经有其它内核代码已经申请了。


但已经设为IRQF_SHARED中断共享了啊

#12


应该是触发中断方式没有设置,如果是共享中断,两个中断方式应该设置一致。

#13


请问你的-16解决啦吗 我的也出现这个问题

#1


参数不对

#2


哪个参数不对哈?求解

#3


看不出来,自己打印下各个参数比较下吧

#4


引用楼主 jiuge1989 的回复:
request_irq(button_irqs[i].irq,buttons_interrupt,IRQF_SHARED,button_irqs[i].name,(void *)i);
搞了好几天了,都没弄出来。求大牛帮忙!!

最后那个参数(void *)&i

#5


按楼上的应该不对,应该改成以下形式
request_irq(button_irqs[i].irq,buttons_interrupt,IRQF_SHARED,button_irqs[i].name,&button_irqs[i].name);

#6


request_irq(button_irqs[i].irq,buttons_interrupt,IRQF_SHARED,button_irqs[i].name,(void *)i);
的最后一个参数是buttons_interrupt函数的第二个参数。

#7


引用 4 楼 lq651659889 的回复:
引用楼主 jiuge1989 的回复:
request_irq(button_irqs[i].irq,buttons_interrupt,IRQF_SHARED,button_irqs[i].name,(void *)i);
搞了好几天了,都没弄出来。求大牛帮忙!!

最后那个参数(void *)&i


更改之后,返回却是-16.

#8


明显4楼那是有问题的,&i每次都一样。改成&button_irqs[i].name呢?

#9


-16表示Device or resource busy

可能的你的IRQ已经有其它内核代码已经申请了。

#10


引用 8 楼 ezword 的回复:
明显4楼那是有问题的,&i每次都一样。改成&button_irqs[i].name呢?


给buttons_interrupt传的是i,不是name.所以不能改为&button_irq[i].name

#11


引用 9 楼 zhangzhaocap 的回复:
-16表示Device or resource busy

可能的你的IRQ已经有其它内核代码已经申请了。


但已经设为IRQF_SHARED中断共享了啊

#12


应该是触发中断方式没有设置,如果是共享中断,两个中断方式应该设置一致。

#13


请问你的-16解决啦吗 我的也出现这个问题