Bell 32V development
authorTom London <tbl@research.uucp>
Mon, 26 Mar 1979 12:36:56 +0000 (07:36 -0500)
committerTom London <tbl@research.uucp>
Mon, 26 Mar 1979 12:36:56 +0000 (07:36 -0500)
Work on file usr/include/sys/inode.h

Co-Authored-By: John Reiser <jfr@research.uucp>
Synthesized-from: 32v

usr/include/sys/inode.h [new file with mode: 0644]

diff --git a/usr/include/sys/inode.h b/usr/include/sys/inode.h
new file mode 100644 (file)
index 0000000..de774e4
--- /dev/null
@@ -0,0 +1,74 @@
+/*
+ * 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.
+ */
+
+#define        NADDR   13
+
+#define        NINDEX          15
+struct group {
+       short   g_state;
+       char    g_index;
+       char    g_rot;
+       struct  group   *g_group;
+       struct  inode   *g_inode;
+       struct  file    *g_file;
+       short   g_rotmask;
+       short   g_datq;
+       struct  chan *g_chans[NINDEX];
+};
+struct inode
+{
+       char    i_flag;
+       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 */
+       unsigned short  i_mode;
+       short   i_nlink;        /* directory entries */
+       short   i_uid;          /* owner */
+       short   i_gid;          /* group of owner */
+       off_t   i_size;         /* size of file */
+       union {
+               struct {
+                       daddr_t i_addr[NADDR];  /* if normal file/directory */
+                       daddr_t i_lastr;        /* last logical block read (for read-ahead) */
+               };
+               struct  {
+                       daddr_t i_rdev;                 /* i_addr[0] */
+                       struct  group   i_group;        /*  multiplexor group file */
+               };
+       } i_un;
+};
+
+
+extern struct inode inode[];   /* The inode table itself */
+
+/* flags */
+#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 */
+
+/* modes */
+#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 */
+#define        IWRITE  0200
+#define        IEXEC   0100