code:struct inode - ikarishinjieva/unixV6-code-analyze-chs GitHub Wiki
- 磁盘INODE结构
5600 /*
5601 * Inode structure as it appears on
5602 * the disk. Not used by the system,
5603 * but by things like check, df, dump.
5604 */
5605 struct inode
5606 {
5607 int i_mode;
5608 char i_nlink;
5609 char i_uid;
5610 char i_gid;
5611 char i_size0;
5612 char *i_size1;
5613 int i_addr[8];
5614 int i_atime[2];
5615 int i_mtime[2];
5616 };
5617 /* ------------------------- */
- 核心代码使用的INODE结构,作为磁盘INODE的内存缓存
- inode定义为磁盘INODE的内存缓存数组
- NINODE 定义在param.h 0131行,值为 100
5650 /* The I node is the focus of all
5651 * file activity in unix. There is a unique
5652 * inode allocated for each active file,
5653 * each current directory, each mounted-on
5654 * file, text file, and the root. An inode is ’named’
5655 * by its dev/inumber pair. (iget/iget.c)
5656 * Data, from mode on, is read in
5657 * from permanent inode on volume.
5658 */
5659 struct inode
5660 {
5661 char i_flag;
5662 char i_count; /* reference count */
- 标志位
- IACC : 该INODE已被存取
- IUPD : 该INODE已被修改
5663 int i_dev; /* device where inode resides */
- 系统 file结构 引用该INODE的引用数
- 参考 文件系统之内存打开文件结构
5664 int i_number; /* i number, 1-to-1 with device
- 对应的设备的设备号
5665 address */
5666 int i_mode;
- 该INODE在设备INODE区的序号,从1开始
5667 char i_nlink; /* directory entries */
- 该文件/目录的模式标志
- 关于模式常量,参考inode.h
- 参看 文件系统之inode类型
5668 char i_uid; /* owner */
- 该INODE块的勾连数
- 参看文件系统之勾连
5669 char i_gid; /* group of owner */
- 该文件/目录的拥有者
5670 char i_size0; /* most significant of size */
- 该文件/目录的拥有组
5671 char *i_size1; /* least sig */
5672 int i_addr[8];/* device addresses constituting file */
- 该文件/目录的大小
5673 int i_lastr; /* last logical block read (for
- 该文件/目录的磁盘块索引数组,参见文件系统之文件索引结构
5674 read-ahead) */
5675 } inode[NINODE];
- 最后读取的块号
- 用于预读(breada)判断
5676 /* ------------------------- */
- code:unlink
- code:chdir
- code:chmod
- code:chown
- code:smdate
- code:core
- code:open1
- code:link
- code:mknod
- code:stat
- code:stat1
- code:sumount
- code:getmdev
- code:readi
- code:writei
- code:bmap
- code:closef
- code:closei
- code:openi
- code:owner
- code:update
- code:iget
- code:iput
- code:maknode
- code:namei
- code:pipe
- code:readp
- code:writep
- code:plock
- code:prele
- code:sgtty