            -
  ,     .   
   ,   ,    (dirty) 
    .  file      
dentry    f_dentry.  dentry     -
      ,     ,
  .

 

      VFS,    -
  . ,    struct file,   -
  ,      Unix.

        file_operations 
   <linux/fs .h>  .

struct file operations {

struct module *owner;

loff_t (*llseek) (struct file *, loff_t, int);

ssize_t (*read) (struct file *, char *, size_t, loff_t *) ;

ssize_t (*aio_read) (struct kiocb *, char *, size_t, loff_t);

ssize_t (*write) (struct file *, const char *, size_t, loff t *);

ssize t (*aio write) (struct kiocb *, const char *, size_t, loff t) ;

int (*readdir) (struct file *, void *, filldir_t);

unsigned int (*poll) (struct file *, struct poll_table_struct *) ;

int (*ioctl) (struct inode *, struct file *,
unsigned int, unsigned long);

int (*mmap) (struct file *, struct vm area struct *) ;

int (*open) (struct inode *, struct file *) ;

int (*flush) (struct file *);

int (*release) (struct inode *, struct file *);

int (*fsync) (struct file *, struct dentry *, int);

int (*aio_fsync) (struct kiocb *, int) ;

int (*fasync) (int, struct file *, int);

int (*lock) (struct file *, int, struct file_lock *);

ssize t (*readv) (struct file *, const struct iovec *,
unsigned long, loff_t *);

ssize t (*writev) (struct file *, const struct iovec *,
unsigned long, loff_t *);

ssize t (*sendfile) (struct file *, loff_t *, size_t,

read_actor_t, void *) ;   '
ssize_t (*sendpage) (struct file *, struct page *, int,

size_t, loff_t *, int);

unsigned long (*get unmapped_area) (struct file *, unsigned long,
unsigned long, unsigned long,
unsigned long) ;

int (*check flags) (int flags) ;

int (*dir notify) (struct file *filp, unsigned long arg);

int (*flock) (struct file *filp, int cmd, struct file_lock *fl) ;

284                                                                    12