ext4 设备文件处理

来源:互联网 发布:p2p网管软件 编辑:程序博客网 时间:2024/04/28 20:53
if (S_ISCHR(inode->i_mode) || S_ISBLK(inode->i_mode) ||      S_ISFIFO(inode->i_mode) || S_ISSOCK(inode->i_mode)) {inode->i_op = &ext4_special_inode_operations;if (raw_inode->i_block[0])init_special_inode(inode, inode->i_mode,   old_decode_dev(le32_to_cpu(raw_inode->i_block[0])));elseinit_special_inode(inode, inode->i_mode,   new_decode_dev(le32_to_cpu(raw_inode->i_block[1])));}
void init_special_inode(struct inode *inode, umode_t mode, dev_t rdev){inode->i_mode = mode;if (S_ISCHR(mode)) {inode->i_fop = &def_chr_fops;inode->i_rdev = rdev;} else if (S_ISBLK(mode)) {inode->i_fop = &def_blk_fops;inode->i_rdev = rdev;} else if (S_ISFIFO(mode))inode->i_fop = &pipefifo_fops;else if (S_ISSOCK(mode));/* leave it no_open_fops */elseprintk(KERN_DEBUG "init_special_inode: bogus i_mode (%o) for"  " inode %s:%lu\n", mode, inode->i_sb->s_id,  inode->i_ino);}EXPORT_SYMBOL(init_special_inode);
const struct inode_operations ext4_special_inode_operations = {.setattr= ext4_setattr,.listxattr= ext4_listxattr,.get_acl= ext4_get_acl,.set_acl= ext4_set_acl,};
0 0
原创粉丝点击