簡體   English   中英

irq_to_desc函數失敗,帶有IRQ號

[英]irq_to_desc function failing with IRQ number

我正在嘗試為IRQ第43行安裝IRQ處理程序,如下所示:

ret2 = request_irq(irq_no, handle_interrupt, IRQF_SHARED, DEVICE_NAME, &pdev->dev);

但是我繼續使rquest_irq失敗,輸入-22無效。 看完內核代碼后,我可以看到函數request_threaded_irq()在以下幾點以-EINVAL返回:

desc = irq_to_desc(irq);
if (!desc) {
    printk(KERN_EMERG "%s:%d\n", __func__, __LINE__);
    return -EINVAL;
}

誰能幫我理解irq_to_desc()函數返回NULL的原因是什么? 我在mips機器中使用內核版本4.11。

謝謝。

如果相應的IRQ號未映射到任何分配的IRQ描述符,則對irq_to_desc()的調用可能會失敗。 如果啟用了CONFIG_SPARSE_IRQ內核配置,則IRQ描述符將存儲在基數樹中。 否則,IRQ號和描述符之間將直接轉換。

通常在注冊中斷控制器驅動程序時分配IRQ描述符。 您可以參考中斷控制器的數據表或所用平台的數據表。

您可以檢查IRQ 43是否對您的中斷控制器有效。 可以從設備的設備樹節點中找到中斷控制器信息(在設備樹節點中查找interrupt-parent )。

希望這可以幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM