/* dinode.h 4.5 81/03/09 */
* The I node is the focus of all
* file activity in unix. There is a unique
* inode allocated for each active file,
* each current directory, each mounted-on
* file, text file, and the root. An inode is 'named'
* by its dev/inumber pair. (iget/iget.c)
* Data, from mode on, is read in
* from permanent inode on volume.
struct chan
*g_chans
[NINDEX
];
char i_count
; /* reference count */
dev_t i_dev
; /* device where inode resides */
ino_t i_number
; /* i number, 1-to-1 with device address */
short i_nlink
; /* directory entries */
short i_gid
; /* group of owner */
off_t i_size
; /* size of file */
daddr_t I_addr
[NADDR
]; /* if normal file/directory */
daddr_t I_lastr
; /* last read (for read-ahead) */
#define i_addr i_f.I_addr
#define i_lastr i_f.I_lastr
daddr_t I_rdev
; /* i_addr[0] */
struct group I_group
; /* multiplexor group file */
#define i_rdev i_d.I_rdev
#define i_group i_d.I_group
short i_vfdcnt
; /* number of fd's vreading this inode */
short i_hlink
; /* link in hash chain (iget/iput/ifind) */
struct inode
*inode
, *inodeNINODE
;
struct inode
*rootdir
; /* pointer to inode of root directory */
struct inode
*mpxip
; /* mpx virtual inode */
#define ILOCK 01 /* inode is locked */
#define IUPD 02 /* file has been modified */
#define IACC 04 /* inode access time to be updated */
#define IMOUNT 010 /* inode is mounted on */
#define IWANT 020 /* some process waiting on lock */
#define ITEXT 040 /* inode is pure text prototype */
#define ICHG 0100 /* inode has been changed */
#define IPIPE 0200 /* inode is a pipe */
#define IFMT 0170000 /* type of file */
#define IFDIR 0040000 /* directory */
#define IFCHR 0020000 /* character special */
#define IFBLK 0060000 /* block special */
#define IFREG 0100000 /* regular */
#define IFMPC 0030000 /* multiplexed char special */
#define IFMPB 0070000 /* multiplexed block special */
#define ISUID 04000 /* set user id on execution */
#define ISGID 02000 /* set group id on execution */
#define ISVTX 01000 /* save swapped text even after use */
#define IREAD 0400 /* read, write, execute permissions */