在自定义总线上面注册驱动,并分析驱动注册流程
文章目录
前言
之前知识点:
- 了解数据模型
keyObject、keyset;了解总线模型:设备、驱动、总线 - 了解了 注册自己的总线并创建属性文件
- 驱动总线
bus注册流程分析 platform平台总线注册流程分析- 在总线下注册设备及设备注册流程分析
- 平台总线设备注册流程分析
这里 就开始分析总线下驱动注册和总线下驱动注册流程分析。 其实 就是以总线设备、总线驱动、总线为知识点展开理论知识,深化理解。
参考资料
这里还是提供一些串联的知识点,方便整理熟悉基础知识
设备模型基本框架-kobject-kset
驱动-设备模型kobject实现属性文件读写功能
驱动-设备模型kobject实现属性文件读写终篇
驱动-注册自己的总线并创建属性文件
驱动-总线bus注册流程分析
platform总线注册流程分析
在总线下注册设备及设备注册流程分析
Linux驱动之platform 总线设备注册流程分析
以前platform 平台总线相关知识点:
驱动-平台总线-platform设备注册platform驱动注册篇
驱动-平台总线-probe
一、基础实验-注册驱动
自定义总线-注册设备-注册驱动 源码
之前了解过 自定义自己的总线、总线下注册设备、这里了解总线下注册自己的驱动。 会发现每个知识点都特别简单,也就是一个api,加上匹配、回调方法,这里我们将知识点串联起来,一起做实验。
代码参考如下两篇,这里还是一起同步代码出来,方便理解。
驱动-注册自己的总线并创建属性文件
在总线下注册设备及设备注册流程分析
驱动bus 源码如下:
#include <linux/module.h>
#include <linux/init.h>
#include <linux/slab.h>
#include <linux/configfs.h>
#include <linux/kernel.h>
#include <linux/kobject.h>
#include <linux/device.h>
int mybus_match(struct device *dev, struct device_driver *drv)
{
printk("mybus_match");
return (strcmp(dev_name(dev), drv->name) == 0);
};
int mybus_probe(struct device *dev)
{
struct device_driver *drv = dev->driver;
if (drv->probe)
drv->probe(dev);
printk("mybus_probe");
return 0;
};
struct bus_type mybus = {
.name = "mybus",
.match = mybus_match,
.probe = mybus_probe,
};
EXPORT_SYMBOL_GPL(mybus); // 导出总线符号
// 模块的初始化函数
static int bus_init(void)
{
int ret;
printk("bus_init");
ret = bus_register(&mybus);
return 0;
}
// 模块退出函数
static void bus_exit(void

最低0.47元/天 解锁文章
3678

被折叠的 条评论
为什么被折叠?



