Linux中,使用cdev结构体描述一个字符设备。cdev结构体定义inclde/linux/cdev.h文件中。代码如下:
struct cdev {
struct kobject kobj;
struct module *owner; //所属模块
const struct file_operations*ops; //文件操作结构体 编写驱动主要操作的部分
struct list head list;
dev t dev; //设备号
unsigned int count;
}
cdev_init函数用于初始化cdev结构体成员,建立cdev和fie_operations之间的联系。
cdev_add函数用于向系统添加一个cdev结构体,也就是添加一个字符设备。
最后在驱动卸载函数中,用cdev_del函数把这个cdev结构体删除掉。
还是以前篇的基础上进行编写,添加头文件/linux/cdev.h。
先定义一个cdev结构体和一个file_operations 结构体,
在驱动加载函数中添加cdev_init函数和cdev_add函数。
在驱动卸载函数中添加cdev_del函数。
Makefile 文件和上次一样没变。
最后编译。
用insmod 命令加载.ko文件 用cat命令查看设备节点。