• 5.2.7.字符设备驱动工作原理2


    本节讲解了register_chrdev函数,并且重点讲解了内核内部对字符设备驱动的管理机制。

    5.2.7.1、register_chrdev(#include <linux/fs.h>)

    (1)作用,驱动向内核注册自己的file_operations。驱动自己通过调用内核提供的register_chrdev函数向内核注册自己后,应用程序就可以使用这个驱动了
    (2)参数
    (3)inline和static

    static inline int register_chrdev(unsigned int major, const char *name,const struct file_operations *fops)
    register_chrdev(设备号, 设备名字, my_file_operations)

    static: 防止函数名字重复
    inline: 函数是不能定义在头文件里面的(头文件被包含时会原地展开,造成重复定义),用inline(很短的函数用inline,函数开销变小,提高效率)可以只把函数体替换过去,不把函数名替换过去。
    const char * : const向函数内部传参 ,字符串指针
    const struct file_operations:const输入型参数

    5.2.7.2、内核如何管理字符设备驱动

    (1)内核中有一个数组[255]用来存储注册的字符设备驱动。(设备号是有限的)
    (2)register_chrdev内部将我们要注册的驱动的信息(主要是 )存储在数组中相应的位置
    (3)cat /proc/devices查看内核中已经注册过的字符设备驱动(和块设备驱动)

    cat /proc/devices

    (4)好好理解主设备号(major)的概念
    设备号(1~255)可以让内核分配;也可以自己指定,如果指定的已经被占用,则注册失败--》 身份证号

    5.2.7.3、回顾和展望
    (1)回顾:inline、static等关键字
    (2)回顾:/proc文件系统的作用
    (3)展望:将来深入学习驱动时可以去跟register_chrdev到内部看,验证我们上面讲的原理

  • 相关阅读:
    使用Xposed+JustTrustMe来突破SSL Pinning
    反编译工具
    java练习生 使用feign
    java练习生 AOP【日志】【异常处理】
    java 中string类型转Date类型和Date类型转string类型
    Metro Style App 异步简洁而不简单的异步
    Metro Style app :浏览器扩展
    用async 解放你的大脑
    Metro Style App :推送概述(二)
    Metro Style App :Framwork与WinRT(二)
  • 原文地址:https://www.cnblogs.com/Ocean-Star/p/9250305.html
Copyright © 2020-2023  润新知