5650: /* The I node is the focus of all
5651:  * file activity in unix. There is a unique
5652:  * inode allocated for each active file,
5653:  * each current directory, each mounted-on
5654:  * file, text file, and the root. An inode is 'named'
5655:  * by its dev/inumber pair. (iget/iget.c)
5656:  * Data, from mode on, is read in
5657:  * from permanent inode on volume.
5658:  */
5659: struct  inode
5660: {
5661:         char    i_flag;
5662:         char    i_count;        /* reference count */
5663:         int     i_dev;          /* device where inode resides */
5664:         int     i_number;       /* i number, 1-to-1 with device address */
5665: 
5666:         int     i_mode;
5667:         char    i_nlink;        /* directory entries */
5668:         char    i_uid;          /* owner */
5669:         char    i_gid;          /* group of owner */
5670:         char    i_size0;        /* most significant of size */
5671:         char    *i_size1;       /* least sig */
5672:         int     i_addr[8];      /* device addresses constituting file */
5673:         int     i_lastr;        /* last logical block read (for read-ahead) */
5674: 
5675: } inode[NINODE];
5676: /* ---------------------------       */
5677: 
5678: /* flags */
5679: #define ILOCK   01              /* inode is locked */
5680: #define IUPD    02              /* inode has been modified */
5681: #define IACC    04              /* inode access time to be updated */
5682: #define IMOUNT  010             /* inode is mounted on */
5683: #define IWANT   020             /* some process waiting on lock */
5684: #define ITEXT   040             /* inode is pure text prototype */
5685: 
5686: /* modes */
5687: #define IALLOC  0100000         /* file is used */
5688: #define IFMT    060000          /* type of file */
5689: #define         IFDIR   040000  /* directory */
5690: #define         IFCHR   020000  /* character special */
5691: #define         IFBLK   060000  /* block special, 0 is regular */
5692: #define ILARG   010000          /* large addressing algorithm */
5693: #define ISUID   04000           /* set user id on execution */
5694: #define ISGID   02000           /* set group id on execution */
5695: #define ISVTX   01000           /* save swapped text even after use */
5696: #define IREAD   0400            /* read, write, execute permissions */
5697: #define IWRITE  0200
5698: #define IEXEC   0100