Lions' 本読み (99)
Section 4 突入。5507 にて定義されている file という配列はグローバルなファイル・ディスクリプタ (?) にあたるのかな。
open1 手続きから呼び出される falloc 手続きで
6854 for(fp = &file[0]; fp < &file[NFILE]; fp++) 6855 if (fp->f_count ==0) { 6856 u.u_ofile[i] = fp;
されてます。上記 i は ufalloc 手続きで取得したファイル・ディスクリプタ番号 (?) のはず。ちょっと用語が微妙。
ちなみに file 配列の定義は unix/file.h Page 1 で以下。
5507 struct file 5508 { 5509 char f_flag; 5510 char f_count; 5511 int f_inode; 5512 char *f_offset[2]; 5513 } file[NFILE]; 5514 /* -------------------------- */ 5515 5516 /* フラグ */ 5517 #define FREAD 01 5518 #define FWIRTE 02 5519 #define FPIPE 04
となっていて、f_flag の状態が下三つの define なソレにあたる模様。あとは参照カウントと i_node オブジェクトへのポインタと read および write なレコード位置へのポインタ、という形になっているのかどうか。
ちょっと
開始が遅くて時間無いので今朝はこれで終わり。朝練でコツコツ頑張りたいと思ってます