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 もできた。