[Mona] Floppyドライバをカーネルから分離しよう
必須サーバ群をKERNEL.IMGに物理的に組み込んだのでFloppyドライバと付属するFATロジックはカーネルから分離可能なはずである。
Floppyドライバは割り込み後に割りと即応答しないといけない。でもビジーループはかっこ悪いので以下の関数を使えばよいかな。
int Message::receive(MessageInfo* dst, MessageInfo* src, bool(*equals)(MessageInfo* msg1, MessageInfo* msg2)) { MessageInfo msg; for (int i = 0; ; i++) { int result = Message::peek(&msg, i); if (result != 0) { i--; syscall_mthread_yield_message(); } else if ( (*equals)(&msg, src)) { Message::peek(&msg, i, PEEK_REMOVE); break; } } if (dst != NULL) *dst = msg; return 0; }