file, inode与cdev的总结

本文详细介绍了Linux系统中FILE、INODE、CDEV对象的功能和结构,包括它们之间的关系及构建顺序,为理解Linux文件系统和设备驱动提供了基础知识。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

FILE, INODE, CDEV对象的描述

struct file对象:描述进程中打开open一个文件的信息:文件名,标志(可读写),文件偏移

open("/dev/led", O_RDWR|O_CREAT, 0666);
struct file {
struct path f_path;
const struct file_operations*f_op;
unsigned int f_flags;
fmode_t f_mode;
loff_t f_pos; //文件偏移
void *private_data;//万能指针

}

struct cdev对象:描述一个字符设备对象信息(设备号+文件操作对象),任何一个字符设备驱动都有该对象,
struct cdev {
struct kobject kobj;// 基类
struct module *owner;
const struct file_operations *ops;//文件操作对象
struct list_head list;// 链表
dev_t dev; //设备号
unsigned int count;
};

struct inode对象: 描述文件系统中的某个文件的属性(文件权限,类型,uid,gid,修改时间等)
struct inode {
umode_t i_mode;
uid_t i_uid;
gid_t i_gid;
dev_t i_rdev; //设备号
const struct file_operations*i_fop;
struct timespeci_atime;
struct timespeci_mtime;
struct timespeci_ctime;

}


INODE与CDEV对象的关系





FILE,FD,INODE与CDEV对象的关系




FILE,FD,INODE与CDEV对象的构建顺序

申请设备号(alloc_chrdev_region/register_chrdev_region)-->创建cdev对象( cdev_alloc->cdev_init->cdev_add)->创建inode节点(mknod或class_create+device_create)->打开文件file-->得到fd。


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值