inode.h

Go to the documentation of this file.
00001 /* Inode table.  This table holds inodes that are currently in use.  In some
00002  * cases they have been opened by an open() or creat() system call, in other
00003  * cases the file system itself needs the inode for one reason or another,
00004  * such as to search a directory for a path name.
00005  * The first part of the struct holds fields that are present on the
00006  * disk; the second part holds fields not present on the disk.
00007  * The disk inode part is also declared in "type.h" as 'd1_inode' for V1
00008  * file systems and 'd2_inode' for V2 file systems.
00009  */
00010 
00011 EXTERN struct inode {
00012   mode_t i_mode;                /* file type, protection, etc. */
00013   nlink_t i_nlinks;             /* how many links to this file */
00014   uid_t i_uid;                  /* user id of the file's owner */
00015   gid_t i_gid;                  /* group number */
00016   off_t i_size;                 /* current file size in bytes */
00017   time_t i_atime;               /* time of last access (V2 only) */
00018   time_t i_mtime;               /* when was file data last changed */
00019   time_t i_ctime;               /* when was inode itself changed (V2 only)*/
00020   zone_t i_zone[V2_NR_TZONES]; /* zone numbers for direct, ind, and dbl ind */
00021   
00022   /* The following items are not present on the disk. */
00023   dev_t i_dev;                  /* which device is the inode on */
00024   ino_t i_num;                  /* inode number on its (minor) device */
00025   int i_count;                  /* # times inode used; 0 means slot is free */
00026   int i_ndzones;                /* # direct zones (Vx_NR_DZONES) */
00027   int i_nindirs;                /* # indirect zones per indirect block */
00028   struct super_block *i_sp;     /* pointer to super block for inode's device */
00029   char i_dirt;                  /* CLEAN or DIRTY */
00030   char i_pipe;                  /* set to I_PIPE if pipe */
00031   char i_mount;                 /* this bit is set if file mounted on */
00032   char i_seek;                  /* set on LSEEK, cleared on READ/WRITE */
00033   char i_update;                /* the ATIME, CTIME, and MTIME bits are here */
00034 } inode[NR_INODES];
00035 
00036 #define NIL_INODE (struct inode *) 0    /* indicates absence of inode slot */
00037 
00038 /* Field values.  Note that CLEAN and DIRTY are defined in "const.h" */
00039 #define NO_PIPE            0    /* i_pipe is NO_PIPE if inode is not a pipe */
00040 #define I_PIPE             1    /* i_pipe is I_PIPE if inode is a pipe */
00041 #define NO_MOUNT           0    /* i_mount is NO_MOUNT if file not mounted on*/
00042 #define I_MOUNT            1    /* i_mount is I_MOUNT if file mounted on */
00043 #define NO_SEEK            0    /* i_seek = NO_SEEK if last op was not SEEK */
00044 #define ISEEK              1    /* i_seek = ISEEK if last op was SEEK */

Generated on Fri Apr 14 22:57:29 2006 for minix by  doxygen 1.4.6