在Linux内核里面,设备(device)主要分为字符设备,块设备,网络设备
,字符设备驱动是Linux驱动基础,在看《Linux 设备驱动开发详解》这本书的过程中,把字符设备相知识记录整理如下。
字符设备驱动的组成
字符设备驱动模块加载和卸载函数
//设备结构体
struct xxx_dev_t{
struct cdev cdev;
//......
}xxx_dev;
static struct xxx_dev *xxx_dev;
const struct file_operations xxx_fops = {
.owner = THIS_MODULE,
.read = xxx_read,
.write = xxx_write,
//......
}
stattic int __init xxx_init(void)
{
//......
cdev_init(&xxx_dev->cdev, &xxx_fops);
xxx_dev->cdev.owner = THIS_MODULE;
//获取字符设备号
alloc_chrdev_region(&xxx_dev_no, 0, DEVICE_COUNT, DEVICE_NAME);
//注册设备
ret = cdev_add(&xxx_dev->cdev, xxx_dev_no, 1);
//......
}
static void __exit xxx_exit(void)
{
//注销设备
cdev_del(&xxx_dev->cdev);
//注销设备号
unregister_chrdev_region(xxx_dev_no,1);
//......
}
字符驱动操作成员函数
static int xxx_open(