投稿

4月, 2019の投稿を表示しています

MochiOS@仮想ファイルシステムの作成part4

イメージ
MochiOS@仮想ファイルシステムの作成part4 前提知識無しで作るなんちゃって仮想ファイルシステムpart4。 開発日記です。独り言です。 これまでのあらすじ part 内容 0 仮想ファイルシステムを作りたい宣言をする。 1 ざっくり仮想ファイルシステムの機能を決める。 が、機能呼出し先の仮想ファイルシステムのタスクIDをどう取得するかという問題に気付く。 2 カーネルにタスク名登録機能を実装した。 これでタスク名からタスクIDを取得する事が出来る様になるハズ、なので試したいが試す方法が無い事に気付き、ログ出力タスクの開発を宣言する。 3 ログ出力の為に使うvsnprintf()の仕様を調べる。 とりあえず確認できた。 vsnprintf()の仕様調査や実装方法、リアルのお仕事の多忙さやハワイ旅行などで苦戦しつつ、漸くタスク名「LOG」からタスクIDを取得し、そのタスクIDへログ出力メッセージを送信する事ができた。 ちょっと洒落てmlog起動時にロゴを出している。 基本的な動きは以下の通り。 mvfs mlog カーネル 物理メモリ領域割当( VRAMアドレス ) 仮想アドレス タスク名登録( "LOG" ) mlogロゴ画面出力 タスクID取得( "LOG" ) タスクID ログ出力( "main.c:115 mvfs start!" )※ ログ画面出力 mvfs mlog カーネル ※ファイル名main.cと行数115はvsnprintf()により書式変換している。 仮想ファイルシステム開発に戻る 思い起こすと、私は仮想ファイルシステムの開発をしようとしていて、part1でこんなシーケンスを考えていた。 (ビデオは一旦ログ出力で占有する事にしたので、シーケンスの登場人物ビデオドライバをシリアルポートドライバに変更した) ユーザプロセス mvfs シリアルポートドライバ mount( "/serial" ) open( "/serial" ) open( "/serial" ) read() re