借り初めのひみつきち

仮ブログです。

最小ステップで作る UEFI OS v0.3

もう UEFI とあんまり関係なくなってきましたが OS の開発を続けていこうと思います。

github.com

スレッディングの実装

まずはスレッディングを実装します。

コンテキストスイッチには setjmp/longjmp を使います。
これによって setjmp/longjmp の中身とスレッドを起動した最初の状態を作るための関数のみアセンブリ言語で記述し、それ以外の処理は C 言語で書けるようになります。

ハードウェアマルチスレッディングには対応していません。
現時点ではまじめにスケジューリングしていないので全てのスレッドが同じキューを共有します。
SSE のコンテキスト切り替え対策を入れていないので SSE のコード実行するとクラッシュすることがあります。

PS/2 マウスの実装

スレッディングを実装したことによって HID 関係のタスクをメインスレッドで気にしなくてよくなったので、 HID スレッドを実装してマウスを処理します。
現時点ではカーソルが動き回ると画面が破壊されます。

f:id:neriring16:20181021205842p:plain

次はマウスカーソルで画面壊れない実装ですかね?