6.2.6 File operations

file_operations構造体はファイル処理の一般的なインタフェースであり,ファイルの開閉・読み書きのための関数を含んでいる.inode_operationsはファイル構造体を変更する必要があるため,ファイル構造体は別の構造体として保持されている.inodeのinode_operations構造体には,標準ファイル操作であるdefault_file_ops構成要素がすでに指定されている.

include/linux/fs.h

struct file_operations {
    int (*lseek) (struct inode *, struct file *, off_t, int);
    int (*read) (struct inode *, struct file *, char *, int);
    int (*write) (struct inode *, struct file *, char *, int);
    int (*readdir) (struct inode *, struct file *, struct dirent *, int);
    int (*select) (struct inode *, struct file *, int, select_table *);
    int (*ioctl) (struct inode *, struct file *, unsigned int, unsigned long);
    int (*mmap) (struct inode *, struct file *, struct vm_area_struct *);
    int (*open) (struct inode *, struct file *);
    void (*release) (struct inode *, struct file *);
    int (*fsync) (struct inode *, struct file *);
    int (*fasync) (struct inode *, struct file *, int);
    int (*check_media_change) (dev_t dev);
    int (*revalidate) (dev_t dev);
};

これらの関数はソケットとデバイスドライバも扱うことができる.