没有得到cntl应用程序

时间:2010-09-29 13:54:53

标签: linux-kernel

我是linux设备驱动程序员。

我正在为嗅探器硬件编写驱动程序。

这个嗅探器硬件将不断从总线读取数据。

我的驱动程序中有一个中断处理程序来通知收到的数据。

我使用dma地址映射来存储数据。

h / w使用pyhsical地址,驱动程序使用虚拟地址。

我的问题,总是中断处理程序接收数据中断接收数据。

我的应用程序无法获取cntl从驱动程序获取数据。

中断处理程序不向应用程序端提供cntl。 Bcoz连续不停止中断。

我该怎么办?请帮帮我。

由于 孙大信

2 个答案:

答案 0 :(得分:0)

听起来你需要弄清楚如何加速你的中断处理程序。

答案 1 :(得分:0)

使用类似NAPI的方法 - 当您获得通知现有数据的中断时,您:

  1. 禁用Rx中断。
  2. 启动/唤醒内核线程/工作队列以开始从设备收集数据。继续这样做,直到你收集了环形缓冲区中的所有数据。确保让应用程序不时运行(例如,每1000个数据包睡眠X ms)。
  3. 只有当您完成所有传入数据的收集后,才能使内核线程/工作队列中的/停用并重新启用Rx中断。