OS-9000ファイルマネージャエントリ一覧
番号 |
エントリ名 |
対応するシステムコール |
機能概要 |
1 |
Attach |
_os_attach() |
デバイスをアタッチする時に呼び出されます。初めてアタッチされる場合はパスディスクリプタオプションやドライブオプション領域を確保し内容を初期化します。そしてデバイスドライバのスタティックストレージを初期化して、デバイスドライバのInitエントリを呼び出します。既にアタッチされている場合は使用カウントを+1して終了します。 |
2 |
Chdir |
_os_chdir() |
カレントディレクトリを移動する際に呼び出されます。RBFのような階層ディレクトリをサポートするファイルマネージャでは、適切な処理をしてディレクトリを移動します。それ以外のファイルマネージャでは、戻り値E_UNKSVCでエラーリターンします。 |
3 |
Close |
_os_close |
ファイルがクローズされる際に呼び出されます。RBFのようなマルチファイルシステムでは、適切な処理をしてファイルをクローズします。デバイスドライバのSetstatエントリをSS_CLOSEで呼び出してパスがCloseされたことをデバイスドライバへ通知します。 |
4 |
Create |
_os_create() |
ファイルを作成する際に呼び出されます。RBFのようなマルチファイルシステムでは、適切な処理をしてファイルを作成します。デバイスドライバのSetstatエントリをSS_OPENで呼び出してパスがOpenされたことをデバイスドライバへ通知します。SCFのようなシングルファイルシステムでは通常Openと同じ処理をします。 |
5 |
Delete |
_os_delete() |
ファイルを削除する際に呼び出されます。RBFのようなマルチファイルシステムでは、適切な処理をしてファイルを削除します。SCFなどのシングルファイルシステム(?)では、戻り値E_UNKSVCでエラーリターンします。 |
6 |
Detach |
_os_detach |
デバイスをデタッチする時に呼び出されます。使用カウントを-1し、0になったらパスディスクリプタオプションやドライブオプション領域を解放し、デバイスドライバのTerminateエントリを呼び出します。使用カウントが0にならなければそのまま終了します。 |
7 |
Dup |
_os_dup() |
パスを複製する際に呼び出されます。パスの複製に必要な処理はIOManがやってしまうので、通常は戻り値0でそのままリターンします。 |
8 |
Getstat |
_os_getstat() |
デバイスステータスを取得する際に呼び出されます。このエントリの実装は自由です。通常はデバイスドライバのGetstatエントリを呼び出します。なにも処理しなかった場合は戻り値E_UNKSVCでエラーリターンします。なにか処理した場合は適切なエラーコードをリターンします。 |
9 |
Makdir |
_os_makdir() |
ディレクトリを作成する際に呼び出されます。RBFのような階層ディレクトリをサポートするファイルマネージャでは、適切な処理をしてディレクトリを作成します。それ以外のファイルマネージャでは戻り値E_UNKSVCでエラーリターンします。 |
10 |
Open |
_os_open() |
ファイルがオープンされる際に呼び出されます。RBFのようなマルチファイルシステムでは、適切な処理をしてファイルをオープンします。デバイスドライバのSetstatエントリをSS_OPENで呼び出してパスがOpenされたことをデバイスドライバへ通知します。 |
11 |
Read |
_os_read() |
データを読み込む際に呼び出されます。デバイスドライバを呼び出すためのパラメタを求めてデバイスドライバのReadエントリを呼び出します。 |
12 |
Readln |
_os_readln() |
データを読み込む際に呼び出されます。デバイスドライバを呼び出すためのパラメタを求めてデバイスドライバのReadエントリを呼び出します。SCFのような行編集機能を持つファイルマネージャでは、行編集を行います。それ以外のファイルマネージャではReadと全く同じです。 |
13 |
Seek |
_os_seek() |
ファイルポインタを移動する際に呼び出されます。RBFのようなランダムアクセス可能なファイルマネージャでは、適切な処理をしてファイルポインタの移動を行います。それ以外のファイルマネージャでは、戻り値0でそのままリターンするのが一般的です。 |
14 |
Setstat |
_os_setstat() |
デバイスステータスを更新する際に呼び出されます。このエントリの実装は自由です。通常はデバイスドライバのSetstatエントリを呼び出します。なにも処理しなかった場合は戻り値E_UNKSVCでエラーリターンします。なにか処理した場合は適切なエラーコードをリターンします。 |
15 |
Write |
_os_write() |
データを書き出す際に呼び出されます。デバイスドライバを呼び出すためのパラメタを求めてデバイスドライバのWriteエントリを呼び出します。 |
16 |
Writeln |
_os_writeln() |
データを書き出す際に呼び出されます。デバイスドライバを呼び出すためのパラメタを求めてデバイスドライバのWriteエントリを呼び出します。SCFのような行編集機能を持つファイルマネージャでは、行編集を行います。それ以外のファイルマネージャではWriteと全く同じです。 |
error_code Attach(i_attach_pb *, dev_list *); |
error_code Chdir(i_chdir_pb *, pd_com *); |
error_code Close(i_close_pb *, pd_com *); |
error_code Create(i_create_pb *, pd_com *); |
error_code Delete(i_delete_pb *, pd_com *); |
error_code Detach(i_detach_pb *, dev_list *); |
error_code Dup(i_dup_pb *, pd_com *); |
error_code Getstat(i_getstat_pb *, pd_com *); |
error_code Makdir(i_makdir_pb *, pd_com *); |
error_code Open(i_open_pb *, pd_com *); |
error_code Read(i_read_pb *, pd_com *); |
error_code Readln(i_readln_pb *, pd_com *); |
error_code Seek(i_seek_pb *, pd_com *); |
error_code Setstat(i_setstat_pb *, pd_com *); |
error_code Write(i_write_pb *, pd_com *); |
error_code Writeln(i_writeln_pb *, pd_com *); |