我很难让 etherOutputHookAdd() 工作。它的对应物 etherInputHookAdd() 似乎工作正常。有问题的操作系统版本是 VxWorks 5.4 。
钩子代码看起来像这样(我打算实际运行的代码更复杂,但这只是一个例子。)
int anCounter;
STATUS etherHook(struct ifnet *pif, char *buf, int size)
{
anCounter += 1;
return FALSE;
}
我可以像这样从 vxworks shell 连接 etherInputHookAdd
etherInputHookAdd etherHook,"fei",0
这将返回 0(状态正常),之后检查“anCounter”变量将表明活动符合预期。但是,输出方向没有这样的运气。我已经尝试过这两个命令行
etherOutputHookAdd etherHook,"fei",0
etherOutputHookAdd etherHook
这两个都返回 OK,但钩子例程似乎根本没有被调用。我最好的假设是(1)我错过了一个初始化步骤,或者说错了,(2)etherOutputHookAdd 实现只是一个存根,(3)你不能从shell调用它,或者(4)也许我的网卡驱动程序实现是错误的。
欢迎任何解决核心问题的想法 -我如何查看我的董事会发出的内容- 都是受欢迎的。