MochiOS@仮想ファイルシステムの作成part9
MochiOS@仮想ファイルシステムの作成part9 前提知識無しで作るなんちゃって仮想ファイルシステムpart9。 開発日記です。独り言です。 これまでのあらすじ part 内容 0 仮想ファイルシステムを作りたい宣言をする。 1 ざっくり仮想ファイルシステムの機能を決める。 が、機能呼出し先の仮想ファイルシステムのタスクIDをどう取得するかという問題に気付く。 2 カーネルにタスク名登録機能を実装した。 これでタスク名からタスクIDを取得する事が出来る様になるハズ、なので試したいが試す方法が無い事に気付き、ログ出力タスクの開発を宣言する。 3 ログ出力の為に使うvsnprintf()の仕様を調べる。 4 ログ出力タスクを開発してタスク名からタスクIDの取得機能が正しく動いている事が確認できた。 5 mount機能を実装した。たぶんできてる。 6 FDどうやって管理しようかー。メッセージのやり取り制御を状態遷移で制御しようかー。とか考えて、open機能を実装した。たぶんできてる。 7 openと同じようなシーケンスなので、メッセージとちょっとやる事変えて簡単にwrite機能を実装できちゃった。 8 writeと同じようなシーケンスなので、メッセージとちょっとやる事変えて簡単にread機能を実装できちゃった。 closeの仕様を考える 今回はclose機能を作ります。 仮想ファイルサーバとしては、openもwriteもreadもcloseもあんまりやること変わらないハズ。なので簡単にできるかな~と思っている。 あ、キャッシュなんて何にも考えていませんからね。 (ブログ記事までreadのコピペ) ユーザタスク mvfs シリアルポートドライバ ローカルFD-> グローバルFD変換 close要求( グローバルFD ) グローバルFD テーブル参照 vfsClose要求( グローバルFD ) vfsClose応答( グローバルFD, 処理結果 ) グローバルFD解放 close応答( 処理結果 ) ローカルFD解放 ユーザタスク mvfs シリアルポートドライバ シーケンスの順番は何も変わらず、渡すデータとちょっと