linux kernel:devres模块架构分析

参考文档:

https://www.kernel.org/doc/html/latest/driver-api/driver-model/devres.html
https://www.cnblogs.com/sammei/p/3498052.html devres in linux driver

devres:  Managed Device Resource
device resource management

devres_alloc()动态申请内存分配一个devres结构体管理resource资源。
1,指定需要的resource资源的内存大小
(由于不同的device所需的资源多少不一样,所以,需要device告知devres所需的内存多少)
2,指定释放resource资源的release()函数
(由于不同的device所需的资源不一样,所以,需要device告知release()函数,用于释放分配的资源)
3,devres功能是:device告知resource和release(),devres在适当的时机回调release()释放resource

devres功能:

在这里插入图片描述

devres api和初始数据结构:

相关文件:
include/linux/device.h
drivers/base/devres.c

在这里插入图片描述

初始数据结构图:
在这里插入图片描述

struct device里面的devres_head 链表头,用于管理devres
在这里插入图片描述

devm_pinctrl_register()举例devres使用案例

相关文件:drivers/pinctrl/core.c
该文件中只使用了如下devres api:
devres_alloc()
devres_free()
devres_add()
devres_release()

在这里插入图片描述

在kernel代码中,搜索了devres_alloc()函数。
有的是使用一级指针方式:如 struct dma_devres *dr
在这里插入图片描述
大部分使用的都是二级指针方式:如 struct pinctrl_dev **ptr
在这里插入图片描述

devres_alloc(devm_pinctrl_dev_release, sizeof(*ptr), GFP_KERNEL);
指定的resource资源内存大小是一个指针大小
指定的release释放资源的回调函数是:devm_pinctrl_dev_release

devres_alloc() -> devres_alloc_node() -> alloc_dr()

申请 "sizeof(struct devres) + size" 大小的内存, size 是指resource的大小. 

devres_alloc(…) 执行后数据结构图变化:
在这里插入图片描述

pinctrl_register(…)和devres_add(…)执行后数据结构图变化:
在这里插入图片描述

附 devres api 说明:
如下截图参考来自于:
https://www.cnblogs.com/sammei/p/3498052.html devres in linux driver
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/309872.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

最好的 6 个华为/小米/OPPO/VIVO手机数据恢复软件评测

如何恢复手机上已删除的文件?下载 华为/小米/OPPO/VIVO数据恢复是否安全?在这里,我们将与您分享最好的 华为/小米/OPPO/VIVO数据恢复软件,以恢复所有数据,包括照片、视频、应用程序数据等。阅读这篇文章并获得最可靠且…

力扣题目的参数解释(力扣初用者必看指南)

导入: 题目来源:leetcode 867 转置矩阵 参数列表: int** matrix int matrixSize int* matrixColSize int* returnSize int** returnColumnSizes 模仿main()函数 完整代码 运行结果 最后本题的AC答案 结语&…

了解数据链路层中的HDLC协议

HDLC(High-Level Data Link Control)协议是一种数据链路层协议,它定义了在数字通信中数据的传输和控制方式。HDLC协议具有简单高效、可靠可扩展等特点,在广域网和局域网中得到了广泛应用。本文将介绍HDLC协议的基本概念、工作原理…

OpenAI大反击!称纽约时报涉嫌故意操纵,且数据是「合理使用」

大家好我是二狗。 《纽约时报》向法院起诉OpenAI侵犯版权后续事件来了! 就在今天,OpenAI进行了一场“危机公关”:直接在官方博客上撰文发声,反驳《纽约时报》的诉讼,其主要观点有四个: 1、我们正在和新闻…

低代码的应用场景

Gartner 在 2019 年的低代码调研报告中,曾经绘制过一张用来阐述低代码适用场景的“应用金字塔”,如下图所示: 应用级别划分:从下往上,分别为工作组级(Workgroup Class)、部门级(Departmental Class)、企业级(Enterpris…

SV-298XT IP网络广播板 SV-298XT-共公广播音频模块IP网络广播板

SV-298XT IP网络广播板 SV-298XT-共公广播音频模块IP网络广播板 SV-298XT网络广播模块是一款全数字网络型广播模组,核心部分采用了成熟的私有协议解决方案,性能稳定可靠。支持TCP、UDP、组播协议能针对当前服务器中不同的广播任务设置不同的广播传输方式…

mac 快捷键

mac 程序坞 ctrlaltD:打开程序坞 调度中心 Ctrl键↑: 调度中心 Ctrl键↓:应用程序窗口 F11 : 显示桌面 输入法 Ctrl键空格: 切换输入法 Ctrl键Alt(Option)空格: 切换输入法 截屏 帮助 Ctrl键shift键/: 显示帮助

24年教资报名千万不要卡在照片上,看看照片有啥要求?

每年都有很多人教资报名卡在照片上,总是审核不通过,24年教资报名千万不要卡在照片上,快来看看照片有啥要求吧?如果还没有准备,可以支付宝搜索【亿鸣证件照】或者微信搜索【随时照】小程序,然后进入小程序的…

uniapp微信小程序投票系统实战 (SpringBoot2+vue3.2+element plus ) -用户投票实现

锋哥原创的uniapp微信小程序投票系统实战: uniapp微信小程序投票系统实战课程 (SpringBoot2vue3.2element plus ) ( 火爆连载更新中... )_哔哩哔哩_bilibiliuniapp微信小程序投票系统实战课程 (SpringBoot2vue3.2element plus ) ( 火爆连载更新中... )共计21条视频…

Facebook算法背后的奥秘:个性化内容如何塑造你的新闻feed

Facebook,作为全球最大的社交媒体平台之一,其新闻feed承载着用户浏览内容的重要功能。然而,这一切并非偶然,背后隐藏着强大的算法系统。本文将深入探讨Facebook算法的奥秘,揭示个性化内容是如何在新闻feed中精准呈现的…

主播风格的多样性

主播风格是主播在直播过程中表现出来的一种个性特点,它可以影响观众的感知和互动体验。以下是常见的几种主播风格: 1.时尚型:这种风格的主播通常穿着时尚、前卫,以潮流、新颖的形象出现在观众面前,善于捕捉时尚元素,并能够将其融…

2023年快要结束了,今年哪些计算机书值得推荐?

2023年推荐新书有如下几本: 1、软件开发安全之道概念、设计与实施 软件安全设计和实施,覆盖安全概念、设计与实践,让您轻松应对各种威胁与挑战,帮助读者培养安全意识,全面了解软件开发安全之道。 2、C Templates&…

2023年全国职业院校技能大赛(高职组)“云计算应用”赛项赛卷⑩

2023年全国职业院校技能大赛(高职组) “云计算应用”赛项赛卷10 目录 需要竞赛软件包环境以及备赛资源可私信博主!!! 2023年全国职业院校技能大赛(高职组) “云计算应用”赛项赛卷10 模块…

力扣刷题--设计链表707

这个题目的难点: 确定index是什么,index的范围向后遍历的次数,也就是循环的次数在某处添加或者删除一个结点,需要找到它的前一个结点 单链表 首先对于创建一个链表,需要单链表结构 public class ListNode {int val;…

手持终端PDA定制厂家_5G安卓手持机设备/条形码扫描手持机PDA

手持终端PDA是一种功能强大的手持终端设备,具备一维码和二维码扫描功能,广泛应用于门票管理、零售、智能巡检、仓储物资管理、金融、快递等领域。 这款手持终端基于MT6877方案,搭载八核处理器(2xCortex-A78 2.4GHz 6xCortex-A55 2.0GHz)&…

【金猿案例展】首创证券——NoETL敏捷分析解决方案

‍ Aloudata 本项目案例由 Aloudata 投递并参与“数据猿年度金猿策划活动——2023大数据产业年度创新服务企业榜单/奖项”评选。 大数据产业创新服务媒体 ——聚焦数据 改变商业 党的十八大以来,党中央、国务院不断加大金融科技创新支持力度,扩大金融科…

系统存储架构升级分享

一、业务背景 系统业务功能:系统内部进行数据处理及整合, 对外部系统提供结果数据的初始化(写)及查询数据结果服务。 系统网络架构: • 部署架构对切量上线的影响 - 内部管理系统上线对其他系统的读业务无影响 •分布式缓存可进行单独扩容, 与存储及查询功能升级…

中国智造闪耀CES | 木牛科技在美国CES展亮相多领域毫米波雷达尖端方案

素有全球科技潮流“风向标”之称的2024国际消费类电子产品展(CES),于1月9-12日在美国拉斯维加斯会议中心举办。CES是全球最大的消费电子和消费技术展览会之一,汇集了世界各地优秀的消费电子和科技公司,带着最好的产品来…

深入理解C#中的引用类型、引用赋值以及 `ref` 关键字

深入理解C#中的引用类型、引用赋值以及 ref 关键字 在C#编程中,理解引用类型、引用赋值以及 ref 关键字的使用对于编写高效、可靠的代码至关重要。本文将深入探讨这些概念,帮助您更好地理解C#的工作原理。 引用类型简介 在C#中,所有的类型都…

机器学习笔记一之入门概念

目录 一 基本分类二 按模型分类概率模型(Probabilistic Models)非概率模型(Non-Probabilistic Models)对比结论线性模型 (Linear Models)非线性模型 (Non-linear Models)对比 三 按算法分类1.批量学习(Batch Learning&…