Annotation of 42BSD/etc/dump.4.1/include.4.1/sys/inode.h, revision 1.1.1.1

1.1       root        1: /*     inode.h 4.10    82/02/27        */
                      2: 
                      3: /*
                      4:  * The I node is the focus of all file activity in UNIX.
                      5:  * There is a unique inode allocated for each active file,
                      6:  * each current directory, each mounted-on file, text file, and the root.
                      7:  * An inode is 'named' by its dev/inumber pair. (iget/iget.c)
                      8:  * Data, from mode on, is read in from permanent inode on volume.
                      9:  */
                     10: #define        NADDR   13
                     11: 
                     12: struct inode {
                     13:        char    i_flag;
                     14:        char    i_count;        /* reference count */
                     15:        dev_t   i_dev;          /* device where inode resides */
                     16:        ino_t   i_number;       /* i number, 1-to-1 with device address */
                     17: /* begin read from disk */
                     18:        u_short i_mode;
                     19:        short   i_nlink;        /* directory entries */
                     20:        short   i_uid;          /* owner */
                     21:        short   i_gid;          /* group of owner */
                     22:        off_t   i_size;         /* size of file */
                     23:        union {
                     24:                struct i_f {
                     25:                        daddr_t if_addr[NADDR]; /* if normal file/directory */
                     26:                        daddr_t if_lastr;       /* last read (read-ahead) */
                     27:                } i_f;
                     28:                struct i_d {
                     29:                        daddr_t id_rdev;        /* i_addr[0] */
                     30:                } i_d;
                     31:                struct i_s {
                     32:                        struct  socket *is_socket;
                     33:                } i_s;
                     34: #define        i_addr          i_f.if_addr
                     35: #define        i_lastr         i_f.if_lastr
                     36: #define        i_rdev          i_d.id_rdev
                     37: #define        i_socket        i_s.is_socket
                     38:        } i_un;
                     39: /* end read from disk */
                     40:        short   i_XXXXXX;       /* ### */
                     41: /* SHOULD USE POINTERS, NOT INDICES, FOR HAS CHAIN */
                     42:        short   i_hlink;        /* link in hash chain (iget/iput/ifind) */
                     43: };
                     44: 
                     45: #ifdef KERNEL
                     46: struct inode *inode, *inodeNINODE;
                     47: int    ninode;
                     48: 
                     49: struct inode *rootdir;         /* pointer to inode of root directory */
                     50: 
                     51: struct inode *ialloc();
                     52: struct inode *ifind();
                     53: struct inode *iget();
                     54: struct inode *owner();
                     55: struct inode *maknode();
                     56: struct inode *namei();
                     57: #endif
                     58: 
                     59: /* flags */
                     60: #define        ILOCK   01              /* inode is locked */
                     61: #define        IUPD    02              /* file has been modified */
                     62: #define        IACC    04              /* inode access time to be updated */
                     63: #define        IMOUNT  010             /* inode is mounted on */
                     64: #define        IWANT   020             /* some process waiting on lock */
                     65: #define        ITEXT   040             /* inode is pure text prototype */
                     66: #define        ICHG    0100            /* inode has been changed */
                     67: 
                     68: /* modes */
                     69: #define        IFMT    0170000         /* type of file */
                     70: #define                IFCHR           0020000         /* character special */
                     71: #define                IFDIR           0040000         /* directory */
                     72: #define                IFBLK           0060000         /* block special */
                     73: #define                IFREG           0100000         /* regular */
                     74: #define                IFLNK           0120000         /* symbolic link */
                     75: #define                IFPORTAL        0140000         /* portal */
                     76: #define        ISUID   04000           /* set user id on execution */
                     77: #define        ISGID   02000           /* set group id on execution */
                     78: #define        ISVTX   01000           /* save swapped text even after use */
                     79: #define        IREAD   0400            /* read, write, execute permissions */
                     80: #define        IWRITE  0200
                     81: #define        IEXEC   0100

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.