Linuxカーネルに関する技術情報を集めていくプロジェクトです。現在、Linuxカーネル2.6解読室の第2章までを公開中。
ファイルに対するアクセス方法は、各ファイルシステム内で定義し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
2000年06月11日 (日) 22時29分57秒 JST1
[PageInfo]
LastUpdate: 2008-08-27 14:45:10, ModifiedBy: hiromichi-m
[Permissions]
view:all, edit:login users, delete/config:members