创建一个字符设备的基本流程
步骤1.创建设备号
定义了设备号
直接使用MKDEV创建设备号
没有定义设备号
使用alloc_chrdev_region向内核申请设备号
使用register_chrdev_region 向内核注册设备号
步骤2.初始化字符设备
使用cdev_init 初始化字符设备
步骤3.添加设备
使用向cdev_add 向内核添加字符设备
步骤4.创建类
使用class_create创建类
步骤5.创建设备
使用 device_create 创建设备
注意:
1.在创建过程中注意创建失败的处理,需要释放已经申请的设备号、类、设备
2.注意各函数返回值的处理
3.模块退出函数需要释放掉已经申请的字符设备
模块退出时注销设备:
1.使用cdev_del删除字符设备
2.使用 unregister_chrdev_region 注销设备号
3.使用device_destroy释放设备
4.使用 class_destroy 释放类
注意:必须先释放设备在释放类,否则释放设备会失败(找不到正确的类)