udev机制自动创建设备节点过程分析

1、创建设备文件的机制分类

mknod:手动创建设备节点的命令

devfs:可以用于创建设备节点,创建设备节点的逻辑在内核空间(内核2.4版本前使用)

udev:自动创建设备节点的机制,创建设备节点的逻辑在用户空间

mdev:轻量级的udev机制,用于一些嵌入式操作系统

2、udev机制创建设备节点过程分析

      第一步:  注册驱动,主设备号

      第二步:获取设备信息 

      第三步:创建一个设备类,并向上提供目录信息

API:struct class* class_create(struct module *owner,const char *name);                                          功能:创建一个设备类并初始化,向上提交目录信息

      参数:

        owner:指向当前内核模块自身的一个模块指针,填写THIS_MODULE                                           name:向上提交的目录名

        返回值:会预留一个内核空间最顶层的4k空间,失败会返回一个指向这个空间的指针

        bool __must_check IS_ERR(__force const void *ptr)

        功能:判断指针是否指向4k预留空间

        参数:要判断的指针       

        返回值:指向4k空间返回真,否则返回假   

   销毁目录:

void class_destroy(struct class *cls)

功能:销毁目录信息

参数:

cls:指向class对象的指针

无返回值

第四步、向上提交节点信息 

API:struct device *device_create(struct class  *class,struct device *parent,dev_t devt,void *drvdata,const char *fmt,...)

功能:创建一个设备对象,向上提交设备节点信息

参数:

cls:向上提交目录时的类对象指针

parent:当前申请对象前一个节点的地址,未知填NULL

devt:设备号   是主设备号+次设备号 

dridata:申请的device对象的私有数据,填NULL

fmt:向上提交的设备节点名

...:不定长参数

返回值:成功返回申请的device对象首地址,失败返回错误码指针,也是指向4k预留空间 

销毁设备节点信息

void device_destroy(struct class * class,dev_t devt)

功能:销毁设备节点信息

参数:

class:向上提交目录时得到的类对象指针

devt:向上提交设备节点信息时提交的设备号 

返回值:无                                                                                                                                                                                                                                                                                                                                                    

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值