home *** CD-ROM | disk | FTP | other *** search
/ minnie.tuhs.org / 2014.11.minnie.tuhs.org.tar / minnie.tuhs.org / UnixArchive / PDP-11 / Trees / V6 / usr / sys / inode.h < prev    next >
C/C++ Source or Header  |  1975-07-18  |  2KB  |  48 lines

  1. /*
  2.  * The I node is the focus of all
  3.  * file activity in unix. There is a unique
  4.  * inode allocated for each active file,
  5.  * each current directory, each mounted-on
  6.  * file, text file, and the root. An inode is 'named'
  7.  * by its dev/inumber pair. (iget/iget.c)
  8.  * Data, from mode on, is read in
  9.  * from permanent inode on volume.
  10.  */
  11. struct    inode
  12. {
  13.     char    i_flag;
  14.     char    i_count;    /* reference count */
  15.     int    i_dev;        /* device where inode resides */
  16.     int    i_number;    /* i number, 1-to-1 with device address */
  17.     int    i_mode;
  18.     char    i_nlink;    /* directory entries */
  19.     char    i_uid;        /* owner */
  20.     char    i_gid;        /* group of owner */
  21.     char    i_size0;    /* most significant of size */
  22.     char    *i_size1;    /* least sig */
  23.     int    i_addr[8];    /* device addresses constituting file */
  24.     int    i_lastr;    /* last logical block read (for read-ahead) */
  25. } inode[NINODE];
  26.  
  27. /* flags */
  28. #define    ILOCK    01        /* inode is locked */
  29. #define    IUPD    02        /* inode has been modified */
  30. #define    IACC    04        /* inode access time to be updated */
  31. #define    IMOUNT    010        /* inode is mounted on */
  32. #define    IWANT    020        /* some process waiting on lock */
  33. #define    ITEXT    040        /* inode is pure text prototype */
  34.  
  35. /* modes */
  36. #define    IALLOC    0100000        /* file is used */
  37. #define    IFMT    060000        /* type of file */
  38. #define        IFDIR    040000    /* directory */
  39. #define        IFCHR    020000    /* character special */
  40. #define        IFBLK    060000    /* block special, 0 is regular */
  41. #define    ILARG    010000        /* large addressing algorithm */
  42. #define    ISUID    04000        /* set user id on execution */
  43. #define    ISGID    02000        /* set group id on execution */
  44. #define ISVTX    01000        /* save swapped text even after use */
  45. #define    IREAD    0400        /* read, write, execute permissions */
  46. #define    IWRITE    0200
  47. #define    IEXEC    0100
  48.