タスクは時間ベースで休止できる一定の時間が経過するまでタスクを休止状態とし、スケジュールされないようにできる。2021/10/16実装上も幾分hackyな点がある。コンテキスト情報が更新されることになってしまう。APIもやや奇妙な形となっている。この関数は簡略化すると以下のような流れを取る。待ちに移行するとする。指定して呼び出す」という流れを取ると、この2つの処理が行われる間にキューに要素が加えられる余地がある。キューは空でないのに、このタスクは休止状態に移行することになってしまう。解放する処理」がこの間で発生しないよう、排他的に連続して実行されなければならない。(現在の実行コンテキストがロックを保持したまま再度スケジュールされるまで長時間残ってしまう)。返すと、コンテキストスイッチ自体がキャンセルされる。このAPIを用いて以下のように実装されている。引数に取るようなAPIデザインも考えたが、このキューの内部表現に使っているキューがロックフリーな点を活かそうと思いこのようにした。必要になる理由と、自己参照構造体の問題を解決するためのピン留めの導入がよくまとまっていた。現在は、日本語で書かれたRustの非同期プログラミング周りの解説もいくつか見られるので合わせて読むと良いだろう。実装の方は、Rustのasync/awaitランタイムの実装については参考になった。トレイトとのインテグレーション部分ぐらいだった。利用しているが、一般的なユーザーレベルの非同期ランタイムではどう実装されているのか。Rustの現在公開されている章が終わった。MikanOS本も15章が章数的には折り返しなのでこのまま進めていきたい。MikanOSではこれらの章に相当する実装を行っているが、本書の流れからはだいぶ逸脱している。引き続き、MikanOS本で扱っているウィンドウ等のグラフィカルな機能は実装しない方針で進めていく。(後述)このあたりの実装を拡充するにあたってconsoleというモジュールを設けた。ArrowRight,}全てのキー入力はサポートしていないがとりあえずは十分だろう。codeのパースが必要だった。ようなデバイスファイルと対応付ける形にしたい。