虽然调用 是这里描述的最后一步,但这往往只是初始化设备的另 一个中间步骤。这一步通常可以推迟到设备被打开使用时进行。
所有IRQ线的中断处理程序都应该用 注册,并使用devid将IRQ映射 到设备(记住,所有的PCI IRQ线都可以共享)。
将把一个中断处理程序和设备句柄与一个中断号联系起来。历史上, 中断号码代表从PCI设备到中断控制器的IRQ线。在MSI和MSI-X中(更多内容见下文),中 断号是CPU的一个“向量”。
也启用中断。在注册中断处理程序之前,请确保设备是静止的,并且 没有任何中断等待。
MSI和MSI-X是PCI功能。两者都是“消息信号中断”,通过向本地APIC的DMA写入来向CPU发 送中断。MSI和MSI-X的根本区别在于如何分配多个“向量”。MSI需要连续的向量块,而 MSI-X可以分配几个单独的向量。
在调用 之前,可以通过调用 的PCI_IRQ_MSI和/或PCI_IRQ_MSIX标志来启用MSI功能。这将导致PCI支持将CPU向量数 据编程到PCI设备功能寄存器中。许多架构、芯片组或BIOS不支持MSI或MSI-X,调用 时只使用PCI_IRQ_MSI和PCI_IRQ_MSIX标志会失败, 所以尽量也要指定 。
对MSI/MSI-X和传统INTx有不同中断处理程序的驱动程序应该在调用 后根据 和 标志选择正确的处理程序。
使用MSI有(至少)两个真正好的理由:
参见drivers/infiniband/hw/mthca/或drivers/net/tg3.c了解MSI/MSI-X的使 用实例。
到此这篇linux驱动开发需要哪些知识(linux驱动开发需要哪些知识和技能)的文章就介绍到这了,更多相关内容请继续浏览下面的相关 推荐文章,希望大家都能在编程的领域有一番成就!版权声明:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权、违法违规、事实不符,请将相关资料发送至xkadmin@xkablog.com进行投诉反馈,一经查实,立即处理!
转载请注明出处,原文链接:https://www.xkablog.com/goyykf/72947.html