分类: LINUX
2008-07-23 18:07:59
unsigned long ;//索引节点号:对于每一个inode都有一个序号,经由super block结构和其序号,我们可以很容易的找到这个inode。
;//引用计数器:在内核中,很多的结构都会记录其引用计数,以确保如果某个结构正在使用,它不会被不小心释放掉。
unsigned int ; //硬链接数目
; //所有者标识符
; //组标识符
有关uid_t 和gid_t 类型的详细定义:() #ifdef CONFIG_UID16 /* This is defined by include/asm-{arch}/posix_types.h */ typedef __kernel_old_uid_t old_uid_t; typedef __kernel_old_gid_t old_gid_t; #endif /* CONFIG_UID16 */ /* libc5 includes this file to define uid_t, thus uid_t can never change when it is included by non-kernel code * */ #else typedef __kernel_uid_t uid_t; typedef __kernel_gid_t gid_t; #endif /* __KERNEL__ */ 其中关于__kernel_old_uid_t和__kernel_uid_t的定义: typedef unsigned short//在i386平台下() typedef unsigned short __kernel_uid_t; typedef unsigned short ;//在i386平台下() |
有关dev_t类型的详细定义: typedef __kernel_dev_t dev_t;() typedef __u32 __kernel_dev_t;() typedef unsigned int __u32;//在i386平台下() |
有关loff_t类型的详细定义: typedef __kernel_loff_t loff_t;() typedef long long __kernel_loff_t;//在i386平台下() |
struct ; //上次访问文件的时间
struct ; //上次修改文件的时间
struct ; //创建索引节点的时间
关struct timespec结构的详细定义:() #ifndef _STRUCT_TIMESPEC #define _STRUCT_TIMESPEC *struct timespec { time_t tv_sec; /* seconds */秒 long tv_nsec; /* nanoseconds */毫微秒 }; #endif 其中关于 time_t 的定义: typedef __kernel_time_t time_t;() 关于__kernel_time_t 的定义: typedef long __kernel_time_t;//在i386平台下() |
usigned int ; //块的位数:文件在做IO时的区块大小
; //文件的块数:文件所使用的磁盘块数,一个磁盘块为512 byte
有关blkcnt_t类型的详细定义:() #ifdef CONFIG_LSF typedef u64 blkcnt_t; //typedef unsigned long long u64;在i386平台下 #else typedef unsigned long blkcnt_t; #endif |
unsigned short ; //文件中最后一个块的字节数
;//文件的类型和访问权限
有关umode_t类型的详细定义:() typedef unsigned short umode_t;//在i386平台下 |
有关i_mode字段的详细说明: 在i386平台下,i_mode占两个字节,共有16位. 其中15-12位用于保存文件类型(括弧内为八进制):
|
struct *; //指向超级块对象的指针:inode所属文件系统的超级块
/*这里又要设计另一个庞大的结构超级块,这里不做讨论,有兴趣可以查看相关资料*/
union {
struct *;//如果文件是一个管道则使用它
struct block_device *i_bdev; //指向块设备驱动程序的指针
struct cdev *i_cdev; //指向字符设备驱动程序的指针
};
int ; //拥有一组此设备号的设备文件的索引
; //索引节点版本号(由某些文件系统使用)
有关__u32类型的详细定义:() typedef unsigned int __u32//在i386平台下 |
unsigned long ;//索引节点的状态标志:可以是I_DIRTY,I_LOCK和 I_FREEING的OR组合
unsigned long ; /* jiffies of first dirtying */ //索引节点的弄脏时间
unsigned int ; //文件系统的安装标志:记录此inode的参数
atomic_t i_writecount; //用于写进程的引用计数器
有关atomic_t类型的详细定义:() typedef struct { int counter; } atomic_t;//在i386平台下 |
void *i_security; //指向索引节点安全结构的指针其中或许还有一些偏差,正在校正中,欢迎指正!
void *; /* fs or device private pointer */ //指向私有数据的指针
niutao.linux2008-07-27 22:08:04
貌似: struct timespec i_mtime; //上次写文件的时间 struct timespec i_ctime; //上次修改索引节点的时间 是不是写错了? i_mtime是修改时间,i_ctime是创建时间。
niutao.linux2008-07-27 22:01:08
首先你虽然对uid_t和gid_t作了解释,但总终还是没有给出其真正的类型,这里给出: typedef unsigned int __kernel_uid_t; typedef unsigned int __kernel_gid_t; 配合你上面给的有关uid_t 和gid_t 类型的详细定义就可以知道最终两个都是unsigned int类型的。