创建一个字符设备的基本流程


步骤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 释放类

注意:必须先释放设备在释放类,否则释放设备会失败(找不到正确的类)