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

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

前提知識無しで作るなんちゃって仮想ファイルシステムpart2。

開発日記です。独り言です。

タスク名登録機能

前回、「あれ、仮想ファイルシステムにメッセージ送るにはどうすんのよ?」というわけで、カーネルに機能を追加した。
https://ja.osdn.net/projects/mochi/scm/git/master/commits/891fd7049c315ec439dd52fdd3eaeb780d374e95
タスク名登録(MkTaskNameRegister())
任意のタスク名を登録。タスク名とタスクIDの関連付けが行える。
タスク名登録解除(MkTaskNameUnregister())
登録したタスク名とタスクIDの関連付けを解除する。
タスクID取得(MkTaskNameGet())
タスク名に一致するタスクIDを取得する。

試したい

作っただけで動くか確認していないので、試したい。
けど、どう試したものか…。
タスクAmvfsカーネルタスク名登録( "VFS" )タスクID取得( "VFS" )タスクIDタスクIDをちゃんと取得できたかをどう確認する…?タスクAmvfsカーネル
LinuxやWindowsだったらprintfで出力できるけれど、まだそんな機能は無い。
  1. 画面にログを出力するタスクを作る。
  2. いっそシリアルポートにログをたれ流せる様なタスクを作る。
  3. カーネルのデバッグログ出力機能を使う。
  4. メモリにログを書き出して、頑張ってメモリダンプして見る。
  5. 成功したら再起動させる。
1、2、3、4は割と面倒だし、5はイケてないなぁ…

画面にログを出力するタスクを作る。

面倒臭いのは確か。
1トレースログ1行で画面に出力していくと最下行に来た時に画面スクロールする機能を作らないといけないし。
でも、これからもトレースログで動作を確認したい事はあるので頑張って作る事にする。幸い、カーネルにも以前OSCで展示用に作っていた端末エミュレータのソースコードもあるので、あまり考えずに切り貼りして作れそう。
とりあえずmlogという名前を付けた。Mochi Log。安易。déjà-vu。
タスクAmlogカーネル物理メモリ領域割当( VRAMアドレス )仮想アドレスタスク名登録( "LOG" )タスクID取得( "LOG" )タスクIDログ出力( "SUCCESS!" )画面出力!タスクAmlogカーネル
画面出力はVRAM(物理メモリ)に書き込む事で行うので、まずカーネルにVRAMメモリ領域の割当を要求する。この機能は実装済み。
ちなみに物理メモリ領域の割り当てはドライバタイプのプロセスしか行えない仕様なので、mlogはドライバとなる。イメージ的にはサーバタイプのプロセスなのだけれど、直接画面出力する機能を付ける為には仕方が無い。
本当はちゃんとビデオドライバ、端末エミュレータサーバに機能分割して、タスク間通信して機能実装するのが正論なのだけれど、それには結局、ファイルサーバの存在が不可欠でイタチゴッコとなるので、我慢。
mlog端末エミュレータビデオドライバログ出力送信先タスクIDはどうやって?画面出力だから送信先タスクIDはどうやって!?!?mlog端末エミュレータビデオドライバ
次に、"LOG"としてタスク名を登録。
後は、タスク名"LOG"を名乗ってるタスクにログ出力メッセージを投げつければ、うまい事画面にログが流れる。
とりあえず、mlogのリポジトリ登録した。
https://github.com/MasterMochi/mlog

コメント

このブログの人気の投稿

プライバシーポリシー

git@よく使うコマンド早見表

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