etherOutputHookAdd() を機能させようとして困惑しています。その対応物である etherInputHookAdd() は正常に動作しているようです。問題の OS バージョンは VxWorks 5.4 です。
フック コードは次のようになります (実際に実行するコードはもっと複雑ですが、これは例として役立ちます)。
int anCounter;
STATUS etherHook(struct ifnet *pif, char *buf, int size)
{
anCounter += 1;
return FALSE;
}
vxworks シェルから etherInputHookAdd を次のように接続できます。
etherInputHookAdd etherHook,"fei",0
これは 0 (STATUS OK) を返します。その後、「anCounter」変数を調べると、予想どおりのアクティビティが示されます。ただし、出力方向にはそのような運はありません。これらのコマンドラインの両方を試しました
etherOutputHookAdd etherHook,"fei",0
etherOutputHookAdd etherHook
どちらも OK を返しますが、フック ルーチンはまったく呼び出されていないようです。私の最善の仮説は、(1) 初期化ステップがないか、呼び出し方が間違っている、(2) etherOutputHookAdd の実装が単なるスタブである、(3) シェルから呼び出すことができない、または (4) たぶん私の nic ドライバーの実装にはバグがあります。
中心的な問題 (ボードから送信されたものを確認するにはどうすればよいか) を解決するアイデアを歓迎します。