lwip の BSD Socket を動かす

簡単な HTTP GET のコードが動かない。症状は

  • send は成功したように見える(実際は virtio の send が呼ばれていない)
  • recv が mbox wait でブロックする


virtio の send が呼ばれていないのでおそらく設定漏れだろう。別の OS の移植例を見ていたら multi-thread のときは lwip_init ではなくて tcpip_init を呼び出さないといけないそうだ。さすがにこれは関数名が悪いと思う。


動かしてみると Host で動いている Mosh echo server で accept & recv できた。まだ問題が残っている。

  • Guest 側で recv 出来ていないように見える
  • たまに落ちる eip はいつも同じ
  • gethostname 的な物を動かしたい

追記

落ちる原因は新たに作った tcpip スレッドが IO 命令発行権限を付与されていなかったから。これを修正したら recv もできた。