驱动-总线bus注册流程分析

前面讲过注册自己的总线,那么注册流程是怎样的呢? 这里就需要分析下。


前言

解决上面两个疑惑,就是分析 bus_register 这个方法,里面到底做了什么,理解流程、分析过程,通过这些来初步理解总线。

参考资料

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

驱动-平台总线-platform设备注册platform驱动注册篇
驱动-平台总线-probe

Linux在线源码

  之前了解过平台总线platform 设置注册、驱动注册、平台总线probe 知识点。当了解这里bus 总线知识点时候好多地方似曾相识,拿来对比、参考、知识温习。

相关在线源码参考:
bus_register
kobject_set_name
kset_create_and_add
kset_create
kobject_set_name

一、结构体 subsys_private

注册总线,如下api 调用:

    ret = bus_register(&mybus);                 // 注册总线

   简单看一下 bus_register 源码:


**
 * bus_register - register a driver-core subsystem
 * @bus: bus to register
 *
 * Once we have that, we register the bus with the kobject
 * infrastructure, then register the children subsystems it has:
 * the devices and drivers that belong to the subsystem.
 */
int bus_register(struct bus_type *bus)
{
   
   
	int retval;
	struct subsys_private *priv;   // 第一个结构体成员就是 subsys_private ,我们就先分析它
	struct lock_class_key *key = &bus->lock_key;

   ......
	return retval;
}

struct subsys_private 是 Linux 内核设备模型(Device Model)中的核心数据结构,用于管理总线、设备和驱动程序的内部状态。

结构体定义

struct subsys_private {
   
   
    struct kset subsys;
    struct kset *devices_kset;
    struct list_head interfaces;
    struct mutex mutex;
    
    struct kset *drivers_kset;
    struct klist klist_devices;
    struct klist klist_drivers;
    struct blocking_notifier_head bus_notifier;
    unsigned int drivers_autoprobe:1;
    struct bus_type *bus;
    
    struct kset glue_dirs;
    struct class *class;
};

核心参数详解

subsys (kset)

  • 核心 kset 对象,表示该子系统的顶层目录
  • sysfs 中表现为一个目录,包含该总线的所有设备和驱动程序
  • 用于实现内核对象的热插拔支持
    我们分析下代码:
bus_register 方法中 代码片段:

	struct subsys_private *priv;
	struct lock_class_key *key = &bus->lock_key;
	priv = kzalloc(sizeof(struct subsys_private), 
【顶刊TAC复现】事件触发模型参考自适应控制(ETC+MRAC):针对非线性参数不确定性线性部分时变连续系统研究(Matlab代码实现)内容概要:本文档介绍了“事件触发模型参考自适应控制(ETC+MRAC)”的研究与Matlab代码实现,聚焦于存在非线性参数不确定性且具有时变线性部分的连续系统。该研究复现了顶刊IEEE Transactions on Automatic Control(TAC)的相关成果,重点在于通过事件触发机制减少控制器更新频率,提升系统资源利用效率,同时结合模型参考自适应控制策略增强系统对参数不确定性和外部扰动的鲁棒性。文档还展示了大量相关科研方向的技术服务内容,涵盖智能优化算法、机器学习、路径规划、电力系统、信号处理等多个领域,并提供了Matlab仿真辅导服务及相关资源下载链接。; 适合人群:具备自动控制理论基础、非线性系统分析背景以及Matlab编程能力的研究生、博士生及科研人员,尤其适合从事控制理论与工程应用研究的专业人士。; 使用场景及目标:① 复现顶刊TAC关于ETC+MRAC的先进控制方法,用于非线性时变系统的稳定性与性能优化研究;② 学习事件触发机制在节约通信与计算资源方面的优势;③ 掌握模型参考自适应控制的设计思路及其在不确定系统中的应用;④ 借助提供的丰富案例与代码资源开展科研项目、论文撰写或算法验证。; 阅读建议:建议读者结合控制理论基础知识,重点理解事件触发条件的设计原理与自适应律的构建过程,运行并调试所提供的Matlab代码以加深对算法实现细节的理解,同时可参考文中列举的其他研究方向拓展应用场景。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

野火少年

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

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

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

打赏作者

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

抵扣说明:

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

余额充值