社区
Linux_Kernel
帖子详情
request_irq返回-22,这是怎么回事?
yaoweisun
2007-09-11 04:20:54
我设的中断号是165,上网搜资料说可能是IRQ>15或者handle=NULL。所以改成10,结果request_irq返回-16
...全文
4412
11
打赏
收藏
request_irq返回-22,这是怎么回事?
我设的中断号是165,上网搜资料说可能是IRQ>15或者handle=NULL。所以改成10,结果request_irq返回-16
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
11 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
kevin_neu
2011-11-08
打赏
举报
回复
1
分析一下/kernel/irq/manage.c的代码就明白了,如下:
...
if (irqflags & IRQF_SHARED) && !dev_id)
return -EINVAL;
...
我想遇到申请中断返回-22的朋友多半是在申请的时候使用了IRQF_SHARED标志,却在dev_id这个参数传递了NULL吧。
解决方法非常简单,只需要把这个参数设为非空即可,因为如果IRQF_SHARED的话,中断机制需要将dev_id传递给Handler.如果实在不需要这个参数的话,就按照如下处理就行:
static int noused;
request_irq(...., &noused);
arm_linux1982
2007-09-13
打赏
举报
回复
yaoweisun,问题解决了吗?
arm_linux1982
2007-09-12
打赏
举报
回复
我也是用中断出现了同样的问题,是在做AD转换时,我的返回值是-16,中断号用IRQ_ADC_DONE申请的,请问谁知道是怎么回事?谢谢。
tb01412
2007-09-12
打赏
举报
回复
中断号165??
一般说来没有这么大的中断号吧?好像高版本的内核支持比较大的中断号了,最初的只支持0x32以下的硬件中断号
hefuhua
2007-09-11
打赏
举报
回复
tkit 说的那样,看看cat /proc/interrupts 有没有165,如果有就直接用好了,中断的很多特殊要求因为x86的8259中断管理芯片的局限性才搞那么多规矩,其它平台可以根据硬件自由使用.
yaoweisun
2007-09-11
打赏
举报
回复
2.4内核
yaoweisun
2007-09-11
打赏
举报
回复
我是在pxa270上做实验,中断号165是书上给出的
tkit
2007-09-11
打赏
举报
回复
lz的本意是想测试中断处理函数,还是确实有一个设备驱动要注册中断?如果想测试的话,你可以“cat /proc/interrupts“然后选择一个没人用的中断号,然后怎样触发是另外的故事。如果你是有一个真实的设备,那么这个设备的中断号是固定的,通常由ACPI来描述,你并不能随意选取的
hefuhua
2007-09-11
打赏
举报
回复
/usr/src/linux-2.6.21.5/kernel/irq/manage.c
....
int request_irq(unsigned int irq, irq_handler_t handler,
unsigned long irqflags, const char *devname, void *dev_id)
{
....
if (!handler)
return -EINVAL;
....
}
hefuhua
2007-09-11
打赏
举报
回复
#define EINVAL 22 /* Invalid argument */
hefuhua
2007-09-11
打赏
举报
回复
楼主是什么平台及什么内核版本
#define EBUSY 16 /* Device or resource busy */
表示中断已经被使用,要不你设置成共享中断试试看
[Q&A23101]调用 devm_
request
_threaded_
irq
() 函数申请中断
返回
-
22
如何解决调用 devm_
request
_threaded_
irq
() 函数申请中断
返回
-
22
request
_
irq
()
原文地址:http://blog.csdn.net/wealoong/article/details/7566546 一、中断注册方法 在Linux内核中用于申请中断的函数是
request
_
irq
(),函数原型在Kernel/
irq
/manage.c中定义: int
request
_
irq
(unsigned int
irq
,
irq
_handler_t handler,
request
_
irq
()——注册中断服务
在 2.4 内核和 2.6内核中都使用
request
_
irq
() 函数来注册中断服务函数。在 2.4 内核中,需要包含的头文件是 #include ,2.6 内核中需要包含的头文件则是 #include 。函数原型如下: 2.4 内核 int
request
_
irq
(unsigned int
irq
, void (*handler)(int, void *
request
_
irq
中断号
上面在说到安装中断的时候说过,调用
request
_
irq
()时的参数中
irq
的确定是个难题,为什么? 你如果到网络上查一下关于linux的资料,十有八九是关于i386体系结构上的,但linux是可以运行在多种cpu上的,比如采用arm内核的s3c2410,在i386体系上的经验在这里可以用么?我们试验一下:硬件准备,使用s3c2410的EINT0引脚作中断测试,为它编写一个中断驱动程序,最后
imx6获取中断号_
request
_
irq
中断号的确定(终于遇见个厚道的cp一下) | 技术部落
转自http://blog.csdn.net/gwl11/article/details/6364336上面在说到安装中断的时候说过,调用
request
_
irq
()时的参数中
irq
的确定是个难题,为什么?你如果到网络上查一下关于linux的资料,十有八九是关于i386体系结构上的,但linux是可以运行在多种cpu上的,比如采用arm内核的s3c2410,在i386体系上的经验在这里可以用么?我们...
Linux_Kernel
4,467
社区成员
17,461
社区内容
发帖
与我相关
我的任务
Linux_Kernel
Linux/Unix社区 内核源代码研究区
复制链接
扫一扫
分享
社区描述
Linux/Unix社区 内核源代码研究区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章