[[PageNavi(internal22-navi)]]
{{{ comment
h2w-title:ファイル操作
}}}
= ファイル操作 = #SECTION03810000000000000000
ファイルに対するアクセス方法は、各ファイルシステム内で定義しinode_operations構造体とfile_operationsという二つのファイル操作関数テーブルを用意する。
ファイルopen時に各ファイルシステムがメモリiノードとfile構造体にその関数テーブルを登録する。以後この関数テーブル経由で、vfs側からファイル実体への操作が可能となる。
同じファイルシステムでも、ファイルの種類(通常ファイルとディレクトリなど)により、アクセス方法がことなるため、このテーブルはファイルの種類毎に用意することになる。
'''ファイル操作関数テーブル'''
{{{
struct file_operations {
loff_t (*llseek) ();
ssize_t (*read) ();
ssize_t (*write) ();
int (*readdir) ();
unsigned int (*poll) ();
int (*ioctl) ();
int (*mmap) ();
int (*open) ();
int (*flush) ();
int (*release) ();
int (*fsync) ();
int (*fasync) ();
int (*check_media_change) ();
int (*revalidate) ();
int (*lock) ();
};
}}}
'''iノード操作関数テーブル'''
{{{
struct inode_operations {
struct file_operations * default_file_ops;
int (*create) ();
int (*lookup) ();
int (*link) ();
int (*unlink) ();
int (*symlink) ();
int (*mkdir) ();
int (*rmdir) ();
int (*mknod) ();
int (*rename) ();
int (*readlink) ();
struct dentry * (*follow_link) ();
int (*readpage) ();
int (*writepage) ();
int (*bmap) ();
void (*truncate) ();
int (*permission) ();
int (*smap) ();
int (*updatepage) ();
int (*revalidate) ();
};
}}}
----
''(NIS)HirokazuTakahashi [[BR]]2000年06月11日 (日) 22時29分57秒 JST''1
[[PageNavi(internal22-navi)]]