NICドライバのReadにタイムアウトを指定する
前回まではuIPで簡単に、ネットワークアプリがかけるようにWindows上で開発を進めていました。
これをMonaに移植するに当たって、Mona側のNICドライバをちょこっと修正しなければなりません。
Readの仕様を
・現状:Readを発行するとデータが受信されるまでスレッドがブロックされる
・変更後:Readを発行すると、指定したms後までにデータ受信がなければ処理が戻る
と変更するのが今日からの実装。
そういえばタイムアウト処理はどこかに実装したような気がするので調べて見たらkeyboard_serverにひっそりと
bool WaitInterruptWithTimeout(dword ms, byte irq, const char* file = "no file", int line = 0);
こんなものがあるのですが実際は使われていない模様。
これを参考にやってみよう。
set_timer(ms)/MonAPI::Message::peek/syscall_mthread_yield_message()あたりを使用して実装しました。