linux file结构体成员,Linux file 结构体和 inode 结构体

struct inode {

umode_t                        i_mode;

/* inode的权限 */

unsigned short                i_opflags;

kuid_t                        i_uid;

/* inode拥有者的id */

kgid_t                        i_gid;

/* inode所属的群组id */

unsigned int                i_flags;

#ifdef CONFIG_FS_POSIX_ACL

struct posix_acl        *i_acl;

struct posix_acl        *i_default_acl;

#endif

const struct inode_operations        *i_op;

struct super_block        *i_sb;

struct address_space        *i_mapping;

#ifdef CONFIG_SECURITY

void                        *i_security;

#endif

/* Stat data, not accessed from path walking */

unsigned long                i_ino;

/*

* Filesystems may only read i_nlink directly.  They shall use the

* following functions for modification:

*

*    (set|clear|inc|drop)_nlink

*    inode_(inc|dec)_link_count

*/

union {

const unsigned int i_nlink;

unsigned int __i_nlink;

};

dev_t                        i_rdev;

/* 若是设备文件,此字段将记录设备的设备号 */

loff_t                        i_size;

/* inode所代表的文件大小 */

struct timespec                i_atime;

/* inode最近一次的存取时间 */

struct timespec                i_mtime;

/* inode最近一次的修改时间 */

struct timespec                i_ctime;

/* inode的产生时间 */

spinlock_t                i_lock;

/* i_blocks, i_bytes, maybe i_size */

unsigned short          i_bytes;

unsigned int                i_blkbits;

enum rw_hint                i_write_hint;

blkcnt_t                i_blocks;

/* inode所使用的block数,一个block为512字节 */

#ifdef __NEED_I_SIZE_ORDERED

seqcount_t                i_size_seqcount;

#endif

/* Misc */

unsigned long                i_state;

struct rw_semaphore        i_rwsem;

unsigned long                dirtied_when;

/* jiffies of first dirtying */

unsigned long                dirtied_time_when;

struct hlist_node        i_hash;

struct list_head        i_io_list;

/* backing dev IO list */

#ifdef CONFIG_CGROUP_WRITEBACK

struct bdi_writeback        *i_wb;

/* the associated cgroup wb */

/* foreign inode detection, see wbc_detach_inode() */

int                        i_wb_frn_winner;

u16                        i_wb_frn_avg_time;

u16                        i_wb_frn_history;

#endif

struct list_head        i_lru;

/* inode LRU list */

struct list_head        i_sb_list;

struct list_head        i_wb_list;

/* backing dev writeback list */

union {

struct hlist_head        i_dentry;

struct rcu_head                i_rcu;

};

u64                        i_version;

atomic_t                i_count;

atomic_t                i_dio_count;

atomic_t                i_writecount;

#ifdef CONFIG_IMA

atomic_t                i_readcount;

/* struct files open RO */

#endif

const struct file_operations        *i_fop;

/* former ->i_op->default_file_ops */

struct file_lock_context        *i_flctx;

struct address_space        i_data;

struct list_head        i_devices;

union {

struct pipe_inode_info        *i_pipe;

struct block_device        *i_bdev;

/* 若是块设备,为其对应的block_device结构体指针 */

struct cdev                *i_cdev;

/* 若是字符设备,为其对应的cdev结构体指针 */

char                        *i_link;

unsigned                i_dir_seq;

};

__u32                        i_generation;

#ifdef CONFIG_FSNOTIFY

__u32                        i_fsnotify_mask;

/* all events this inode cares about */

struct fsnotify_mark_connector __rcu        *i_fsnotify_marks;

#endif

#if IS_ENABLED(CONFIG_FS_ENCRYPTION)

struct fscrypt_info        *i_crypt_info;

#endif

void                        *i_private;

/* fs or device private pointer */

} __randomize_layout;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值