読者です 読者をやめる 読者になる 読者になる

Minixのファイルシステムの実装

自作OS

自作カーネルMinixファイルシステム(V2)実装できました。ソースはいつもながらこちらです。
主要な実装はfs/minix/minixfs.cの以下の関数です。

  • minix_get_sb():スーパーブロックを読む
  • read_file():指定したファイルのデータを取得
  • find_file():ファイル名からファイルを検索して、そのinodeを返す

呼び出しかたがまだ、テストコードな域ですが、こんな感じで呼び出して、

	read_file(vmount, &minix_sb, "/dir_a/dir_b/foobar.txt");

こんな結果になります。

ファイルシステム上のfoobar.txtは以下のようになってます。

00036440  07 00 66 6f 6f 62 61 72  2e 74 78 74 00 00 00 00  |..foobar.txt....|
00036450  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
00036800  04 00 2e 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00036810  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00036820  01 00 2e 2e 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00036830  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00036840  05 00 64 69 72 5f 42 00  00 00 00 00 00 00 00 00  |..dir_B.........|
00036850  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
00036c00  05 00 2e 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00036c10  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00036c20  04 00 2e 2e 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00036c30  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
00037000  41 42 43 44 45 0a 00 00  00 00 00 00 00 00 00 00  |ABCDE...........|
00037010  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
00037400  66 6f 6f 62 61 72 0a 00  00 00 00 00 00 00 00 00  |foobar..........|
00037410  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|