driver_register源码研究
device_driver结构体比起device的要简单很多,变量的作用大多都是望文生义了其中bool suppress_bind_attrs的作用是用于禁止在驱动目录下生成bind和unbind文件,这两个文件可以通过写入设备名称选择绑定或者解绑驱动与设备一般定义driver时候,只需要填写 bus owner name of_match_table probe remove这几个就够用了比如spi_driver中,就在driver的基础上进行了封装,同时注册的时候,其专用的注册函数spi_register_driver中帮忙补充了bus信息,owner信息driver_privatelinux中class,bus,driver等都将对外接口和私有的数据通过private指针进行了分割kobj代表driver在sysfs层级结构中的位置,也代表其在/sys/bus/什么总线/driver中的位置klist_devices: 通过device那边提供的knode,将当前驱动匹配成功的device串起来,能够线程安全的遍历和删除knode_bus: 作为bus的private数据中的klist_drivers的成员,让bus随便方便访问和遍历mkobj:指向对应/sys/module/中模块文件夹在sysfs的层级结构的kobjdriver:指回自己所属的driverdriver_register简单了解一下注册流程155行,可能会发出警告的原因是对于一些系统已经有的总线类型,系统会通过特定bus来调用特有的probe,而不是直接调用内嵌device_driver的probe比如下图的platform_driver,其probe就是在device_driver之外实现的这样的好处是总线统一调度,传入的参数直接就是该总线对应的特殊类型的device161行,判断一下有无同名驱动167行,是真正核心的添加驱动函数,后面详细展开讲170行,给/sys中驱动对应的文件夹添加属性文件175行,给用户空间发送一个kobj_add的通知事件,即/sys/bus/driver/driver名称 KOBJ_ADD事件主要的核心内容是167行的bus_add_driver,解析如下bus_add_driver第一段686行,给device_driver的私有数据申请空间694行,指定当前device_driver的私有数据的内嵌kobj属于当前bus私有数据内嵌的kset这里不直接指定kobj的父亲,但是对于没有父亲的kobj来说,695行执行kobj的add后,内部会自动选择父亲为其所属kset的kobj700行,挂载driver到bus的klist上701行,开启工作线程,进行驱动匹配加载的工作第二段712行,添加driver到自己的module中,module在sysfs中的层级位置对应/sys/module/模块名714行,创建driver属性文件到/sys/bus/xxxbus/driver/driver名的目录中719行,创建总线上driver共有的属性文件到driver的目录中727行,判断要不要添加bind和unbind允许用户手动绑定和解绑设备与驱动匹配的可写文件

相关新闻

解析一个老网站:GBK 编码、页面结构漂移与限流退避

解析一个老网站:GBK 编码、页面结构漂移与限流退避

我维护着一个每天自动跑十几轮的采集任务,数据源是一个十几年前的老站。它有个很要命的特点:页面只保留最近三个批次,过时就没了——漏一轮,那批数据就永久缺失,没有补档的地方。 跑了几个月,真正咬人的不是…

2026/10/11 1:28:29 阅读更多 →
SISSO稀疏符号回归构建可解释钙钛矿稳定性因子

SISSO稀疏符号回归构建可解释钙钛矿稳定性因子

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/11 1:28:29 阅读更多 →
Python高光谱遥感影像识别与分类:从数据读取到3D-CNN实战

Python高光谱遥感影像识别与分类:从数据读取到3D-CNN实战

简介:这份资源面向计算机、遥感与人工智能方向的本科生和研究生,适用于毕业设计、课程设计及项目开发场景,围绕高光谱遥感影像识别与分类这一课题提供完整实现方案。压缩包共24个文件,约6.01MB,以13个Python源码文件为…

2026/10/11 1:28:29 阅读更多 →

最新新闻

基于Spring Boot + Vue的蘑菇百科系统设计与实现指南

基于Spring Boot + Vue的蘑菇百科系统设计与实现指南

毕设选题年年有人纠结,年年有人踩坑。如果你正盯着“XX管理系统”这类老掉牙的题目发愁,或者担心做纯网页展示类项目显得工作量不足,我强烈建议你认真看看“基于Spring Boot Vue的蘑菇百科系统”这个方向。它既有信息管理系统的完整业务链路…

2026/10/11 2:23:00 阅读更多 →
PJ85718DM与PIC18LF46K40在HVAC温控系统中的高可靠设计

PJ85718DM与PIC18LF46K40在HVAC温控系统中的高可靠设计

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/11 2:23:00 阅读更多 →
Kubernetes 内存超分与防爆死指南:基于 cgroup v2 memory.high 的平滑降级实操

Kubernetes 内存超分与防爆死指南:基于 cgroup v2 memory.high 的平滑降级实操

在 Kubernetes 生产集群的算力成本治理中,CPU 属于典型的“可压缩资源(Compressible Resource)”,当算力超卖或并发突刺时,CFS 调度器最多让应用稍微慢一点、延迟稍微抖动一下,进程本身并不会消亡。而内存则…

2026/10/11 2:23:00 阅读更多 →
Git误操作急救:reflog与fsck恢复丢失代码

Git误操作急救:reflog与fsck恢复丢失代码

git误操作这种事,凡是写过代码的人多多少少都遇到过。可能是午休回来手一抖,把分支 reset 到了一周前;也可能是合并的时候顺手 rebase 了一下,push 时才被远程仓库一口回绝;更常见的是git checkout -- .之后&#xff0…

2026/10/11 2:23:00 阅读更多 →
Linux进程控制实战:fork、exec、wait与僵尸进程排查指南

Linux进程控制实战:fork、exec、wait与僵尸进程排查指南

写Linux程序的人,几乎都要跟进程控制打交道。fork、exec、exit、wait这四个词,翻过书的人都能念出来,但真正把它们组合起来用对,才是区分“看过”和“会写”的分水岭。我见过不少开发者在多进程服务里栽跟头,要么子进程…

2026/10/11 2:23:00 阅读更多 →
Linux网络性能优化实战:从内核参数调整到tcpdump抓包排查

Linux网络性能优化实战:从内核参数调整到tcpdump抓包排查

某个深夜,线上接口的P99延迟从60ms一路冲到700ms,我第一时间就想做一轮Linux网络性能优化与监控,于是把网上那套内核参数调优脚本挨个灌进去,tcp_tw_reuse、tcp_max_syn_backlog全都改了。结果延迟没降,反而有机器连接…

2026/10/11 2:22:00 阅读更多 →

日新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/11 0:00:27 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/11 0:00:27 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/11 0:00:27 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/11 0:00:27 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/11 0:00:27 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/11 0:00:27 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/10 5:23:50 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/9 21:32:20 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/10 10:38:42 阅读更多 →