Я в тупике, пытаясь заставить etherOutputHookAdd () работать. Его аналог, etherInputHookAdd (), кажется, работает нормально. Рассматриваемая версия ОС VxWorks 5.4.
Код хука выглядит так (код, который я намерен запустить, более сложный, но это служит примером.)
int anCounter;
STATUS etherHook(struct ifnet *pif, char *buf, int size)
{
anCounter += 1;
return FALSE;
}
Я могу подключить etherInputHookAdd из оболочки vxworks, вот так
etherInputHookAdd etherHook,"fei",0
Возвращает 0 (STATUS OK), после чего проверка переменной 'anCounter' покажет активность, как и ожидалось. Однако не повезло с выходным направлением. Я пробовал обе эти командные строки
etherOutputHookAdd etherHook,"fei",0
etherOutputHookAdd etherHook
Оба они возвращаются в порядке, но процедура ловушки, кажется, вообще не вызывается. Мои лучшие гипотезы: (1) я пропускаю шаг инициализации или неправильно его называю, (2) реализация etherOutputHookAdd - просто заглушка, (3) вы просто не можете вызвать ее из оболочки, или (4) моя реализация драйвера nic глючит.
Любые идеи, которые решают центральную проблему - как мне увидеть, что отправляется с моей доски - приветствуются.