2023 linux驱动中probe函数的返回值,返回0成功。返回负数则失败,这个时候驱动向系统申请的有关资源都会被释放,如中断号,申请的内存等。实际测试。

news2024/11/26 17:40:07

一、在linux 驱动里面申请一个gpip,,gpip2b4 变换是 76 ,dts 如下:

	m117b@45 {
        compatible = "xxx,m117b";
		reg = <0x45>;
		pinctrl-names = "default";
		pinctrl-0 = <&m117b_gpio>;
		pwdn-gpios = <&gpio2 RK_PB4 IRQ_TYPE_LEVEL_LOW>;
	};

二、probe 函数返回0情况下,可以看到gpio-76 被占用。

       2.1、驱动里面的probe函数代码

int m117b_probe(struct i2c_client *i2c_client, const struct i2c_device_id *id)
{
	int ret;
	struct device *dev = &i2c_client->dev;	

	
	m117b_client = i2c_client;

	ret = device_create_file(&i2c_client->dev, &dev_attr_m117b_read_temp);
	if (ret)
	  printk("[%s]device_create_file is error \n",__func__);
	else
	  printk("[%s]ret is %#x\n", __func__,ret);

	printk("[%s]m117b_probe test %#x\n", __func__,ret);
	pwdn_gpio = devm_gpiod_get(dev, "pwdn", GPIOD_OUT_LOW);
    
    return 0;
}

        2.2、可以看到这个gpio申请成功,被占用。

三、probe 返回负数的情况,自动释放已经申请的gpip。

      3.1、驱动probe 函数代码

int m117b_probe(struct i2c_client *i2c_client, const struct i2c_device_id *id)
{
	int ret;
	struct device *dev = &i2c_client->dev;	

	
	m117b_client = i2c_client;

	ret = device_create_file(&i2c_client->dev, &dev_attr_m117b_read_temp);
	if (ret)
	  printk("[%s]device_create_file is error \n",__func__);
	else
	  printk("[%s]ret is %#x\n", __func__,ret);

	printk("[%s]m117b_probe test %#x\n", __func__,ret);
	pwdn_gpio = devm_gpiod_get(dev, "pwdn", GPIOD_OUT_LOW);

	
	return -EINVAL;
}

      3.2、gpio-76 没有被占用。

         3.3、串口log 会提示error

 

四、总结

       当一个probe函数返回负数,驱动向系统申请的有关资源都会被释放,如中断号、GPIO、申请的内存等。

五、参考文章

linux驱动中probe函数的返回值_a254373829的博客-CSDN博客

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

数据库数据更新:从内存到磁盘,一步步揭开数据的神秘面纱!

大家好&#xff0c;我是小米&#xff01;今天我要和大家分享一下数据库数据更新的流程。作为一名热衷于技术分享的小伙伴&#xff0c;我希望通过本篇文章&#xff0c;帮助大家更好地理解数据库数据更新的过程。废话不多说&#xff0c;让我们开始吧&#xff01; 获取数据 在数据…

PM3328BP-6电源模块PIONEER MAGNETICS

PM3328BP-6电源模块PIONEER MAGNETICS PM3328BP-6电源模块PIONEER MAGNETICS DCS中的先进控制技术 DCS在控制上的最大特点是依靠各种控制、运算模块的灵活组态&#xff0c;可实现多样化的控制策略以满足不同情况下的需要&#xff0c;使得在单元组合仪表实现起来相当繁琐与复杂…

基于GO实现的简易博客,附源码

1、简介 此博客系统主要是基于GO、Gin、Gorm进行开发&#xff0c;以及采用lay-ui框架进行前端界面的开发&#xff0c;项目包含功能众多&#xff0c;基本上涵盖了博客系统的大部分需求。 此项目适合开发者练手学习&#xff0c;同时也适合高校毕业设计的作品。 以下对作品进行…

#经验分享#消防电源强切故障

工业园火灾报警控制器显示&#xff0c;13#厂房电源强切报故障&#xff0c;经过紧急处理&#xff0c;成功解决了故障问题。 据了解&#xff0c;故障原因是71#强切模块被修复大门时损坏模块破碎无法进行修复&#xff0c; 只留有接线底座&#xff0c;测试并检查底座线路正常。 坏…

如何查看jar包的官网地址

https://mvnrepository.com/ 使用artifactId搜索 点击要查看的版本 查看HomePage LicenseApache 2.0CategoriesJSON LibrariesTagsformatjsonOrganizationAlibaba GroupHomePageGitHub - alibaba/fastjson2: &#x1f684; FASTJSON2 is a Java JSON library with excellent…

Citespace和vosviewer文献计量学可视化SCI论文高效写作方法

【基于Citespace和vosviewer文献计量学相关论文 】 文献计量学是指用数学和统计学的方法&#xff0c;定量地分析一切知识载体的交叉科学。它是集数学、统计学、文献学为一体&#xff0c;注重量化的综合性知识体系。特别是&#xff0c;信息可视化技术手段和方法的运用&#xff…

tp6+企业付款到零钱

一 开通条件&#xff0c;就是首先要在微信平台设置好。 以下微信文档里有的&#xff0c;我这里大概掠几项比较重要的。 付款资金 企业付款到零钱资金使用商户号余额资金。 根据商户号的账户开通情况&#xff0c;实际出款账户有做区别&#xff1a; ◆ 默认情况下&#xff0c…

四、kafka集群与可靠性

Kafka集群的目标 1、高并发 2、高可用&#xff08;防数据丢失&#xff09; 3、动态伸缩 Kafka集群规模如何预估 吞吐量&#xff1a; 集群可以提高处理请求的能力。单个Broker的性能不足&#xff0c;可以通过扩展broker来解决。 磁盘空间&#xff1a; 比如&#xff0c;如…

C# 生成XML文档中如何去掉 xmlns=““

如果在XML 文档的指定了默认的命名空间&#xff0c;那么产生的文档中将会出现xmlns“”。 如何去掉这个烦人的xmlns“”? 网络上似乎都没有讲明白。有人提示: 当我们在AppendChild的时候&#xff0c;如果ParentNode是带有xmlns属性的&#xff0c;而你新加的节点&#xff0c;在…

SpringBoot 高校实验室资产管理系统-计算机毕设 附源码85189

SpringBoot高校实验室资产管理系统 摘 要 随着计算机技术的发展&#xff0c;特别是计算机网络技术与数据库技术的发展&#xff0c;使人们的生活与工作方式发生了很大的改观。本课题研究的高校实验室资产管理系统&#xff0c;主要功能模块包括后台首页&#xff0c;轮播图&#…

WindowManager中Surface申请流程

WindowManager中Surface申请流程 1、SurfaceFlinger 和 WindowManager2、WindowManager中Surface申请流程2.1 WMS侧添加界面时scheduleTraversals()2.2 Window更新过程时scheduleTraversals()2.3 Surface初始化申请2.4 简易时序图 3、对应画布Layer创建3.1 简易时序图 android1…

【Vue3 页面美化】常用组件库推荐

Vue 作为一款深受广大群众喜欢的前端框架&#xff0c;拥有众多优秀的开源 UI 组件库&#xff0c;这里整理了一下供大家参考。 这几套框架主要用于后台管理系统和移动端的制作&#xff0c;方便开发者快速开发。 一、PC 端 UI 库 1.1 Element Plus 官网地址&#xff1a;https…

基于阿里云免费算力自建LLM(类GPT)大模型

这会是一个关于 ChatGPT 的系列文章&#xff0c;主要记录老胡日常使用 ChatGPT 的思考和一些有趣的开源项目&#xff0c;然后这些信息我都会汇总到一个 ChatGPT 信息群(免费&#xff0c;目的是为了交流)&#xff0c;有兴趣的朋友可以联系我进群 &#x1f973;。 目前开源的 LLM…

sql总理论加实践

一、基础查询 DQL语法 SELECT 字段列表 1.设置别名 SELECT 字段1[别名],字段二[别名]......FROM 表名 WHERE 条件列表; 2.查询多个字段 SELECT 字段1,字段2,字段3......FROM 表名; SELECT * FROM 表名; 3.去除重复记录 DISTANT FROM 表明列表 WHERE 条件列表(条件…

Stable Diffusion: 利用Latent Diffusion Models实现高分辨率图像合成

原文链接&#xff1a; Stable Diffusion: 利用Latent Diffusion Models实现高分辨率图像合成 High-Resolution Image Synthesis with Latent Diffusion Models 01 The shortcomings of the existing works?02 What problem is addressed?03 What are the keys to the solutio…

RESTful API 中的 HTTP 方法有哪些?

RESTful API 中的 HTTP 方法有哪些&#xff1f; RESTful API 是一种基于 HTTP 协议的 API 设计风格&#xff0c;它使用 HTTP 协议中的方法来定义对资源的操作。在 RESTful API 中&#xff0c;HTTP 方法主要用于表示对资源的操作&#xff0c;例如获取、创建、更新和删除资源。本…

持 PMP®证书增持 CSPM-2证书,怎么弄?

2023年起&#xff0c;持有PMP证书的朋友可以直接增持一个同等级证书CSPM-2&#xff0c;不用重新考试&#xff0c;不用重新学习&#xff0c;原PMP证书不影响正常使用&#xff0c;相当于多了一个国标项目管理领域的证书。 第一步准备资料 1、填写能力评价表(简历和业绩不用填&am…

自毁便签:MaiFile Privnote

自毁便签&#xff1a;MaiFile Privnote为您提供安全可靠的信息传递 在当今数字化时代&#xff0c;隐私保护成为了人们关注的焦点。MaiFile Privnote作为一种创新的在线服务&#xff0c;为用户提供了一种安全、便捷的方式来发送私密信息&#xff0c;确保信息在传递后能够自动销…

SSM校园二手交易微信小程序-计算机毕设 附源码87210

SSM校园二手交易微信小程序 目 录 1 绪论 1.1 研究背景 1.2国内外研究现状 1.3论文结构与章节安排 2 校园二手交易微信小程序系统分析 2.1 可行性分析 2.1.1技术可行性分析 2.1.2经济可行性分析 2.1.3操作可行性分析 2.1.4需求分析 2.2 系统流程分析 2.2.1 数据流程…

【HTTP】HTTP协议 HTTPS 协议

目录 一、HTTP &#x1f337;1、HTTP是什么&#xff1f; &#x1f337;2、HTTP的工作过程 &#x1f337;3、 抓包工具Fiddler的使用 &#x1f337;4、HTTP的协议格式&#xff08;重点&#xff09; &#x1f337;5、HTTP请求 5.1 请求地址URL 5.2 方法method 5.3 认识 …