Linux 核心--16.Linux数据结构( 三 )


struct inode * f_inode;
struct file_operations * f_op;
unsigned long f_version;
void *private_data;/* needed for tty driver, and maybe others */
};

files_struct
描叙被某进程打开的所有文件 。

struct files_struct {
int count;
fd_set close_on_exec;
fd_set open_fds;
struct file * fd[NR_OPEN];
};

fs_struct

struct fs_struct {
int count;
unsigned short umask;
struct inode * root, * pwd;
};

gendisk
包含关于某个硬盘的信息 。用于磁盘初始化与分区检查时 。

struct hd_struct {
long start_sect;
long nr_sects;
};

struct gendisk {
int major; /* major number of driver */
const char *major_name;/* name of major driver */
int minor_shift; /* number of times minor is shifted to
get real minor */
int max_p; /* maximum partitions per device */
int max_nr;/* maximum number of real devices */

void (*init)(struct gendisk *);
 /* Initialization called before we
do our thing */
struct hd_struct *part;/* partition table */
int *sizes;/* device size in blocks, copied to
blk_size[] */
int nr_real; /* number of real devices */

void *real_devices;/* internal use */
struct gendisk *next;
};

inode
此VFS inode结构描叙磁盘上一个文件或目录的信息 。

struct inode {
kdev_t i_dev;
unsigned longi_ino;
umode_ti_mode;
nlink_ti_nlink;
uid_ti_uid;
gid_ti_gid;
kdev_t i_rdev;
off_ti_size;
time_t i_atime;
time_t i_mtime;
time_t i_ctime;
unsigned longi_blksize;
unsigned longi_blocks;
unsigned longi_version;
unsigned longi_nrpages;
struct semaphore i_sem;
struct inode_operations*i_op;
struct super_block *i_sb;
struct wait_queue*i_wait;
struct file_lock *i_flock;
struct vm_area_struct*i_mmap;
struct page*i_pages;
struct dquot *i_dquot[MAXQUOTAS];
struct inode *i_next, *i_prev;
struct inode *i_hash_next, *i_hash_prev;
struct inode *i_bound_to, *i_bound_by;
struct inode *i_mount;
unsigned short i_count;
unsigned short i_flags;
unsigned chari_lock;
unsigned chari_dirt;
unsigned chari_pipe;
unsigned chari_sock;
unsigned chari_seek;
unsigned chari_update;
unsigned short i_writecount;
union {
struct pipe_inode_info pipe_i;
struct minix_inode_infominix_i;
struct ext_inode_infoext_i;
struct ext2_inode_info ext2_i;
struct hpfs_inode_info hpfs_i;
struct msdos_inode_infomsdos_i;
struct umsdos_inode_info umsdos_i;
struct iso_inode_infoisofs_i;
struct nfs_inode_infonfs_i;
struct xiafs_inode_infoxiafs_i;
struct sysv_inode_info sysv_i;
struct affs_inode_info affs_i;
struct ufs_inode_infoufs_i;
struct socketsocket_i;
void *generic_ip;
} u;
};

ipc_perm
此结构描叙对一个系统V IPC对象的存取权限 。

struct ipc_perm
{
key_tkey;
ushort uid; /* owner euid and egid */
ushort gid;
ushort cuid;/* creator euid and egid */
ushort cgid;
ushort mode;/* access modes see mode flags below */
ushort seq; /* sequence number */
};

irqaction
用来描叙系统的中断处理过程 。

struct irqaction {
void (*handler)(int, void *, struct pt_regs *);
unsigned long flags;
unsigned long mask;
const char *name;
void *dev_id;
struct irqaction *next;
};

linux_binfmt
用来表示可被Linux理解的二进制文件格式 。

struct linux_binfmt {

推荐阅读