zoukankan      html  css  js  c++  java
  • 002_linux驱动之_register_chrdev注册字符设备

    (一)解析:register_chrdev函数和unregister_chrdev函数


     
    (二)register_chrdev函数原型
    int register_chrdev(unsigned int major, const char *name,const struct file_operations *fops)
     

    * register_chrdev() -为字符设备注册一个主号码。

    * @major:用于动态分配的主要设备号或0

    * @name:这一系列设备的名称

    * @fops:与此设备相关联的文件操作

    *

    *如果@major == 0,这个函数将动态分配一个main并返回它的号码。

    *如果@major > 0,此函数将尝试使用给定的设备保留设备,主要数字,将返回零成功。

     

    1. 从上面函数原型中我们可知使用register_chrdev函数我们需要设备号,名字,还有相关文件操作就行了
    2. 由于能力有限,看不懂register_chrdev里面的程序,故不粘贴全部代码出来,先知道怎么用
    3. 使用示例:
    major = register_chrdev(0, "first_drv", &first_drv_fops);
    解析:第一个参数0则为系统自动分配设备号,并返回,使用major 变量接收
      第二个参数设置这个系列设备的名称为first_drv
      第三个参数first_drv_fops在003_linux驱动之_file_operations函数
     
    (三)unregister_chrdev函数原型
    int unregister_chrdev(unsigned int major, const char *name)
     
    1. 同第二点可知,卸载一个字符设备只需要设备号和名自就行了
    2. 使用示例:
    unregister_chrdev(major, "first_drv");         
     
    (四)注:
    1. register_chrdev函数当然是在insmod时候应该调用了,看001_linux驱动之_驱动的加载和卸载
    2. unregister_chrdev函数当然是在rmmod时候调用了。
     

     

     
     

  • 相关阅读:
    php utf-8
    thinkPHP--关于域名指向的问题
    PHP命名空间(Namespace)的使用详解
    thinkphp 动态配置
    枚举之称硬币
    5.7
    5.6
    5.5(OI一本通开始)
    5.4
    5.3
  • 原文地址:https://www.cnblogs.com/luxiaoguogege/p/9690199.html
Copyright © 2011-2022 走看看