首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >IRQ数失效的irq_to_desc函数

IRQ数失效的irq_to_desc函数
EN

Stack Overflow用户
提问于 2017-06-21 16:54:42
回答 1查看 1.5K关注 0票数 1

我试图为IRQ第43行安装IRQ处理程序,如下所示:

代码语言:javascript
运行
复制
ret2 = request_irq(irq_no, handle_interrupt, IRQF_SHARED, DEVICE_NAME, &pdev->dev);

但是我继续让rquest_irq失败-22,这是无效的输入。在查看内核代码之后,我可以看到request_threaded_irq()函数与-EINVAL一起返回,如下所示:

代码语言:javascript
运行
复制
desc = irq_to_desc(irq);
if (!desc) {
    printk(KERN_EMERG "%s:%d\n", __func__, __LINE__);
    return -EINVAL;
}

请帮助我理解irq_to_desc()函数返回NULL的原因是什么?我在mips机器中使用内核版本4.11。

谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-06-22 14:56:59

如果没有将相应的IRQ编号映射到任何已分配的IRQ描述符,则对irq_to_desc()的调用可能失败。如果启用了CONFIG_SPARSE_IRQ内核配置,IRQ描述符将存储在基树中。否则,IRQ数和描述符之间就有直接的转换。

在注册中断控制器驱动程序时,通常会分配IRQ描述符。您可以引用中断控制器的数据表或正在使用的平台的数据表。

您可以检查IRQ 43对您的中断控制器是否有效。中断控制器信息可以从设备的设备树节点中找到(在设备树节点中查找interrupt-parent )。

希望这能有所帮助。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44682022

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档