|
DataMuseum.dkPresents historical artifacts from the history of: Regnecentalen RC-900 |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about Regnecentalen RC-900 Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - download
Length: 4537 (0x11b9) Types: TextFile Notes: UNIX file Names: »inode.h«
└─⟦a6ab2eb36⟧ Bits:30004042/kconfig3.imd SW95705I 386/ix Multi-user Release 1.2 └─⟦a6ab2eb36⟧ UNIX Filesystem └─⟦this⟧ »kc/new/usr/include/sys/inode.h«
/* Copyright (c) 1984 AT&T */ /* All Rights Reserved */ /* THIS IS UNPUBLISHED PROPRIETARY SOURCE CODE OF AT&T */ /* The copyright notice above does not evidence any */ /* actual or intended publication of such source code. */ #ident "@(#)inode.h 1.3" #define FSPTR 1 /* * 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. */ typedef struct inode { struct inode *i_forw; /* inode hash chain */ struct inode *i_back; /* '' */ struct inode *av_forw; /* freelist chain */ struct inode *av_back; /* '' */ int *i_fsptr; /* "typeless" pointer to fs dependent */ long i_number; /* i number, 1-to-1 with dev address */ ushort i_ftype; /* file type = IFDIR, IFREG, etc. */ short i_fstyp; /* File system type */ off_t i_size; /* size of file */ ushort i_uid; /* owner */ ushort i_gid; /* group of owner */ ushort i_flag; ushort i_fill; cnt_t i_count; /* reference count */ short i_nlink; /* directory entries */ dev_t i_rdev; /* Raw device number */ dev_t i_dev; /* device where inode resides */ struct mount *i_mntdev; /* ptr to mount dev inode resides on */ union i_u { struct mount *i_mton; /* pntr to mount table entry */ /* that this inode is "mounted on" */ struct stdata *i_sp; /* Associated stream. */ } i_un; #ifdef FSPTR struct fstypsw *i_fstypp; /* pointer to file system */ /* switch structure */ #endif long *i_filocks; /* pointer to filock (structure) list */ struct rcvd *i_rcvd; /* receive descriptor */ } inode_t; extern struct inode inode[]; /* The inode table itself */ struct ifreelist { int pad[2]; /* must match struct inode !*/ struct inode *av_forw; struct inode *av_back; } ; extern struct ifreelist ifreelist; #define i_sptr i_un.i_sp #define i_mnton i_un.i_mton /* flags */ #define ILOCK 0x01 /* inode is locked */ #define IUPD 0x02 /* file has been modified */ #define IACC 0x04 /* inode access time to be updated */ #define IMOUNT 0x08 /* inode is mounted on */ #define IWANT 0x10 /* some process waiting on lock */ #define ITEXT 0x20 /* inode is pure text prototype */ #define ICHG 0x40 /* inode has been changed */ #define ISYN 0x80 /* do synchronous write for iupdate */ #define IADV 0x100 /* advertised */ #define IDOTDOT 0x200 /* object of remote mount */ #define ILBIN 0x400 /* mounted remotely */ #define IRMOUNT 0x800 /* remotely mounted */ #define IISROOT 0x1000 /* This is a root inode of an fs */ /* file types */ /* WARNING: The following defines should NOT change!If more */ /* file types need to be added they should be added in the low */ /* bits */ #define IFMT 0xf000 /* type of file */ #define IFDIR 0x4000 /* directory */ #define IFCHR 0x2000 /* character special */ #define IFBLK 0x6000 /* block special */ #define IFREG 0x8000 /* regular */ #define IFMPC 0x3000 /* multiplexed char special */ #define IFMPB 0x7000 /* multiplexed block special */ #define IFIFO 0x1000 /* fifo special */ /* file modes */ /* the System V Rel 2 chmod system call only knows about */ /* ISUID, ISGID, ISVTX */ /* Therefore, the bit positions of ISUID, ISGID, and ISVTX */ /* should not change */ #define ISUID 0x800 /* set user id on execution */ #define ISGID 0x400 /* set group id on execution */ #define ISVTX 0x200 /* save swapped text even after use */ /* access requests */ /* the System V Rel 2 chmod system call only knows about */ /* IREAD, IWRITE, IEXEC */ /* Therefore, the bit positions of IREAD, IWRITE, and IEXEC */ /* should not change */ #define IREAD 0x100 /* read permission */ #define IWRITE 0x080 /* write permission */ #define IEXEC 0x040 /* execute permission */ #define ICDEXEC 0x020 /* cd permission */ #define IOBJEXEC 0x010 /* execute as an object file */ /* i.e., 410, 411, 413 */ #define IMNDLCK 0x001 /* mandatory locking set */ #define MODEMSK 0xfff /* Nine permission bits - read/write/ */ /* execute for user/group/others and */ /* ISUID, ISGID, and ISVTX */ /* This is another way of saying: */ /* (ISUID|ISGID|ISVTX| */ /* (IREAD|IWRITE|IEXEC)| */ /* ((IREAD|IWRITE|IEXEC)>>3)| */ /* ((IREAD|IWRITE|IEXEC)>>6)) */ #define PERMMSK 0x1ff /* Nine permission bits: */ /* ((IREAD|IWRITE|IEXEC)| */ /* ((IREAD|IWRITE|IEXEC)>>3)| */ /* ((IREAD|IWRITE|IEXEC)>>6)) */