驱动中中断处理和硬件中断的配合问题
中断有可能可以丢失?具体说,PCIe的MSI中断。目前想做一个很简单的DMA,硬件DMA到内在之后,发一个中断,软件得到中断之后给硬件另一个缓冲区。在软件重新设置缓冲区之前硬件是等待的,这样中断如果丢了就会导致类似死锁的效果。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
中断有可能可以丢失?具体说,PCIe的MSI中断。目前想做一个很简单的DMA,硬件DMA到内在之后,发一个中断,软件得到中断之后给硬件另一个缓冲区。在软件重新设置缓冲区之前硬件是等待的,这样中断如果丢了就会导致类似死锁的效果。
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(8)
你看看网卡的dma实现,一般都是一个dma环形队列的。软件设置的时候,dma可以写其他的buf
我知道这个。不过和是否环形无关,我想知道的是中断有没有可能丢,如果有可能的话设计上就要想办法了。
LZ想说的是中断触发的丢失
还是中断处理上的丢失?~
我记得中断丢失好像是这种情况把
如果一个中断来了还没调用ack函数的时候又来了一个中断,两个中断就会合成一个,看起来就是丢失了
我说的是前者。
中断触发的丢失在我现在看过的驱动中~
并没有检测机制~
也就是说这部分是绝对可信任的~
其实LZ可以让电子工程的人做一个中断触发的检测~ 持续触发中断一个星期~ 看看有没有发生过丢失~
我是这样想的~ 既然中断触发可丢失的话~ 检测中断触发的机制也有可能会丢失~ 都是一个几率问题而已~
中断确实会丢失,
情况一般是关中断时间过长或者向我上面说的处理不及时导致几个中断合成一个
包括时钟中断都有可能丢失。
没有检测机制不说明绝对可信任,
而是把怎么检测处理丢失交由中断作者自己解决,
据我所知内核好像没有提供这方面的帮助
我的很简单,就是:
中断->软件处理->通知硬件->有可能再次中断
也就是最多中断一次,一定要软件处理过并通知了硬件才能再次中断。多次来好像会在中断控制器上pending为一次吧?但我现在想知道的是,最多中断一次的情况,在实际应用中有没有可能出现丢失的情况(如电信号不稳定??我也没想到具体的,呵呵)?