我的环境是mpc8245 + vxworks5.5.2板子上有PCI网卡和PCI-USB卡。配置好系统引导启动后在串口输出interrupt: panic: netJobAdd: ring buffer overflow! workQPanic: Kernel work queue overflow。不知是什么引起??
workQPanic: Kernel work queue overflow
work queue overflow 一般来说是应为不停有中断上报并且不停的向kernel queue中添加任务(函数),由于kernel的work queue是一个静态分配的queue,最终由于不能及时清空而overflow。从你的简短的error中能看出netJobAdd是由中断上报的,而且一直有类似的中断上报,你得查查这个中断上报的原因。~
中断溢出了
看一下是不是不停地在进入中断导致中断嵌套之类的,查一下是不是ISR中没有清中断标志之类的错误引起的
当网卡有很多中断产生,通过netAddtoJob函数要将报文通过消息队列送到协议栈,一旦消息队列快满时就会打印“workQPanic: Kernel work queue overflow ”这些信息,一旦停止攻击就会正常。这属于正常现象。当然你的收包程序如果适当修改就会避免打印这些东西了。
楼上只说对了部分 ,出现这种提示肯定是不正常的,它标志着已经出现了网络数据包的丢失. 原因呢,上面几位基本都说了 , 应该是网络接口在引导时,由于bootrom中只初始化了基本功能,所以网络性能较低,如果在引导过程中外界有大量数据进入你的目标机,就有可能出现这种错误. 在进入系统后,vxworks重新配置网络,应该就好了 .
应该是中断比较多,或者你在中断中调用了太多系统函数。
你可以修改一下驱动,连续来的包可以考虑只调用一次netJobAdd,但实现起来比较麻烦一些。
这样的情况通常都是中断出了问题
中断没能正常处理 频繁的响应中断耗费了太多的时间 或者是你在中断中加入了太多的打印信息