为什么当我使用usb串行端口运行程序时,我的计算机一直暂停?



我编写了一个使用三个串行端口的程序(两个串行端口在一个USB ->串行连接器上,另一个串行端口在其自己的USB ->串行连接器上)。当我运行这个程序时,每隔5秒左右,我的计算机就会停止响应,就好像内核在忙着做什么一样。我没有写任何文件,所以它没有刷新到磁盘,我也没有耗尽内存,所以它没有交换。还能是什么呢?会不会是串口被刷新了?这会很奇怪,因为在我向串行端口写入下一个数据位之前,我等待串行端口的响应。

如果我不使用最后一个串行端口(它自己的USB端口上的那个),它会发生得更少。

更多信息:

  • debian lenny(也尝试挤压)
  • linux 2.6.26-2-686(也尝试2.6.32-5-686)
  • 不使用ftdi_sio,使用libftd2xx1.0.2(也尝试过1.0.4)

libftd2xx似乎是问题所在。它改变了线程的优先级,似乎在忙着等待,或者似乎接管了系统。让用户访问/proc/bus/usb中的usb设备并以正常用户身份运行程序似乎可以正常工作,所以我不确定为什么libftd2xx正在改变线程优先级。

最新更新