linux字符设备驱动框架(一)
2017-01-31 16:57
239 查看
字符设备框架主要有四个主要数据结构
1. struct cdev
2. struct file_operations
3. struct inode
4. struct file
cdev 和file_operations之间的调用关系可用下图来表法
首先定义一个自己的结构体如:
struct my_test_dev{
struct cdev cdev;//这个就是要上图中的cdev,在驱动中是必不可少的
int i;
char a;
}
cdev结构体中有三个项要用到,
struct cdev{
struct module *owner;//所属模块,一般赋值为THIS_MODULE
dev_t dev;//设备号
struct file_operations *ops;//文件操作结构体
}
然后定义自己的文件操作结构体模板:
struct file_operations my_test_fops={
.owner = THIS_MODULE,
.read = my_test_read,
.write=my_test_write,
.ioctl=my_test_ioctl,
....
....
}
,注意:上面各项是用逗号分隔而不是分号。
my_test_dev->cdev和my_test_fops通过初始化函数联系在一起:void cdev_init(struct cdev
* , struct file_operations *);
示例:
struct my_test_dev *p_my_test_dev;//定义一个指针,还要分配空间,这里省略
cdev_init(&p_my_test-dev->dev, &my_test_fops);
1. struct cdev
2. struct file_operations
3. struct inode
4. struct file
cdev 和file_operations之间的调用关系可用下图来表法
首先定义一个自己的结构体如:
struct my_test_dev{
struct cdev cdev;//这个就是要上图中的cdev,在驱动中是必不可少的
int i;
char a;
}
cdev结构体中有三个项要用到,
struct cdev{
struct module *owner;//所属模块,一般赋值为THIS_MODULE
dev_t dev;//设备号
struct file_operations *ops;//文件操作结构体
}
然后定义自己的文件操作结构体模板:
struct file_operations my_test_fops={
.owner = THIS_MODULE,
.read = my_test_read,
.write=my_test_write,
.ioctl=my_test_ioctl,
....
....
}
,注意:上面各项是用逗号分隔而不是分号。
my_test_dev->cdev和my_test_fops通过初始化函数联系在一起:void cdev_init(struct cdev
* , struct file_operations *);
示例:
struct my_test_dev *p_my_test_dev;//定义一个指针,还要分配空间,这里省略
cdev_init(&p_my_test-dev->dev, &my_test_fops);
相关文章推荐
- 一步步理解linux字符设备驱动框架(转)
- Linux字符设备驱动框架
- linux分类驱动对字符设备框架压力的卸载
- linux 字符设备驱动框架
- 一步步理解linux字符设备驱动框架
- Linux驱动(三)字符设备驱动框架
- linux驱动学习记录(一)-字符设备框架
- linux 字符设备驱动框架
- linux驱动编写(字符设备编写框架)
- Linux 字符设备驱动框架详细介绍
- linux字符设备驱动框架理解
- Linux字符设备驱动框架
- linux字符设备驱动框架(二)
- linux设备驱动--globalmem字符设备框架分析
- linux驱动开发之字符设备框架 -调用过程分析
- linux驱动字符设备框架
- linux设备驱动--globalmem字符设备框架分析
- Linux字符设备驱动框架
- linux ------ 字符设备驱动框架
- linux驱动开发之字符设备框架 - 实例