platform总线注册流程分析

我们以前了解过知识点:平台总线设备、驱动、设备驱动自动匹配;设备模型keyset/kobject;总线流程分析等。 这里我们继续看一个知识点 平台总线的注册流程分析。


前言

通过了解设备模型 相关知识点:设备模型keyset/kobject;总线流程分析等来进一步了解平台总线注册流程。
同步之前的platform 总线相关知识点串联起来。

参考资料

迅为设备模型资料参考](https://blog.youkuaiyun.com/beijingxunwei/category_12551484.html)
注册一个自己的总线
在总线目录下创建属性文件
驱动-注册自己的总线并创建属性文件
总线注册流程理论分析实验
linux bus_register过程
Linux设备驱动模型简述(源码剖析)

驱动-总线bus注册流程分析
platform总线注册流程实例分析实验
驱动-平台总线-platform设备注册platform驱动注册篇
驱动-平台总线-probe

Linux在线源码

为什么参考资料总是把以前的知识点拉出来,是为了让知识更有层次和体系。 新知识和旧知识串联起来。

一、platform_bus_init 方法

platform_bus_init 是 Linux 内核中初始化平台总线(platform bus)的核心函数。平台总线是 Linux 设备驱动模型中用于连接没有物理总线的设备(通常是 SoC 上的集成设备)的虚拟总线。

启动位置-方法分析

/source/drivers/base/init.c 中启动的
在这里插入图片描述

源码

int __init platform_bus_init(void)
{
   
   
	int error;

	early_platform_cleanup();

	error = device_register(&platform_bus);
	if (error) {
   
   
		put_device(&platform_bus);
		return error;
	}
	error =  bus_register(&platform_bus_type);
	if (error)
		device_unregister(&platform_bus);

	return error;
}

early_platform_cleanup();

初始化资源管理,清理早期注册的平台设备,确保没有冲突。 这里不是我们讨论的核心目标,我们看看下面的方法

bus_register

这个不就是我们上一篇 驱动-总线bus注册流程分析 的知识点嘛。 看源码:

error =  bus_register(&platform_bus_type);

在这里插入图片描述

我们讨论的核心重点就是 platform_bus_type 类型。 我们在 驱动-注册自己的总线并创建属性文件 篇中分简单使用并分析过这个api,简单了解了bus_type 结构体。
在这里插入图片描述

那我们就继续看看 platform_bus_type 结构体

思考bus_register

按照上一篇的知识点 驱动-注册自己的总线并创建属性文件 那么在/sys/bus 下面就应该有 platform_bus_type对应name 的结构体。

const struct bus_type platform_bus_type = {
   
   
	.name		= "platform",
	.....
};
EXPORT_SYMBOL_GPL(platform_bus_type);

在这里插入图片描述
在这里插入图片描述

结构体platform_bus_type

const struct bus_type platform_bus_type = {
   
   
	.name		= "platform",
	.dev_groups	= platform_dev_groups,
	.match		= platform_match,
	.uevent		= platform_uevent,
	.probe		= platform_probe,
	.remove		= platform_remove,
	.shutdown	= platform_shutdown,
	.dma_configure	= platform_dma_configure,
	.dma_cleanup	= platform_dma_cleanup,
	.pm		= &platform_dev_pm_ops,
};
EXPORT_SYMBOL_GPL(platform_bus_type);

这里其实没有什么特别要讲的,都是一些基本的知识点

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

野火少年

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值