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 なレコード位置へのポインタ、という形になっているのかどうか。

ちょっと

開始が遅くて時間無いので今朝はこれで終わり。朝練でコツコツ頑張りたいと思ってます