今天遇到一个网络问题,网口怎么都不通,使用muxStop()和muxStart()命令重启网口也不行,使用下面的命令查看网络缓冲区,最下面的free显示为0。大家帮忙看看为什么会出现这种缓冲区耗尽的现象?什么情况下会造成这个现象?
VxWorks 5.4, 8260子卡
-> netPoolShow 0x77b50d0
type number
--------- ------
FREE : 128
DATA : 34
HEADER : 0
SOCKET : 0
PCB : 0
RTABLE : 0
HTABLE : 0
ATABLE : 0
SONAME : 0
ZOMBIE : 0
SOOPTS : 0
FTABLE : 0
RIGHTS : 0
IFADDR : 0
CONTROL : 0
OOBDATA : 0
IPMOPTS : 0
IPMADDR : 0
IFMADDR : 0
MRTABLE : 0
TOTAL : 162
number of mbufs: 162
number of times failed to find space: 0
number of times waited for space: 0
number of times drained protocols for space: 0
__________________
CLUSTER POOL TABLE
_______________________________________________________________________________
size clusters free usage
-------------------------------------------------------------------------------
1584 81 0 314727
-------------------------------------------------------------------------------
value = 80 = 0x50 = 'P'
->
------解决思路----------------------
你的代码里是否用钩子函数?在return之前是否释放内存?mBlk
------解决思路----------------------
建议添加超时处理机制,如果接收超时,抛弃一些数据包;估计是数据没有接收完整,程序不做处理,结果造成缓冲区满