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

news/2024/12/29 19:14:04/

一、在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__);elseprintk("[%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__);elseprintk("[%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.ppmy.cn/news/480902.html

相关文章

【已恢复】苹果再堵开发者账号注册漏洞,黑市账号价格有价无市!

众所周知&#xff0c;苹果对个人/公司开发者注册实行新流程以来&#xff0c;个人身份验证的唯一性是个大门槛。新流程让注册账号产出量急转直下&#xff0c;但需求保持以往的强劲&#xff0c;于是苹果开发者账号的黑市应运而生。即便在苹果这样最新的流程和规则下&#xff0c;黑…

7-30 查询水果价格 (15 分)

7-30 查询水果价格 (15 分) 给定四种水果&#xff0c;分别是苹果&#xff08;apple&#xff09;、梨&#xff08;pear&#xff09;、桔子&#xff08;orange&#xff09;、葡萄&#xff08;grape&#xff09;&#xff0c;单价分别对应为3.00元/公斤、2.50元/公斤、4.10元/公斤…

7-21 查询水果价格

给定四种水果&#xff0c;分别是苹果&#xff08;apple&#xff09;、梨&#xff08;pear&#xff09;、桔子&#xff08;orange&#xff09;、葡萄&#xff08;grape&#xff09;&#xff0c;单价分别对应为3.00元/公斤、2.50元/公斤、4.10元/公斤、10.20元/公斤。 首先在屏幕…

7-2 查询水果价格 (15 分)

7-2 查询水果价格 (15 分) 给定四种水果&#xff0c;分别是苹果&#xff08;apple&#xff09;、梨&#xff08;pear&#xff09;、桔子&#xff08;orange&#xff09;、葡萄&#xff08;grape&#xff09;&#xff0c;单价分别对应为3.00元/公斤、2.50元/公斤、4.10元/公斤、…

[C语言] PTA 7-55 查询水果价格

给定四种水果&#xff0c;分别是苹果&#xff08;apple&#xff09;、梨&#xff08;pear&#xff09;、桔子&#xff08;orange&#xff09;、葡萄&#xff08;grape&#xff09;&#xff0c;单价分别对应为3.00元/公斤、2.50元/公斤、4.10元/公斤、10.20元/公斤。 首先在屏幕…

PTA 7-3 查询水果价格 (15 分)

7-3 查询水果价格 (15 分) 给定四种水果&#xff0c;分别是苹果&#xff08;apple&#xff09;、梨&#xff08;pear&#xff09;、桔子&#xff08;orange&#xff09;、葡萄&#xff08;grape&#xff09;&#xff0c;单价分别对应为3.00元/公斤、2.50元/公斤、4.10元/公斤、…

1-7-2 查询水果价格分数

1-7-2 查询水果价格 给定四种水果&#xff0c;分别是苹果&#xff08;apple&#xff09;、梨&#xff08;pear&#xff09;、桔子&#xff08;orange&#xff09;、葡萄&#xff08;grape&#xff09;&#xff0c;单价分别对应为3.00元/公斤、2.50元/公斤、4.10元/公斤、10.20…

7-76 查询水果价格

给定四种水果&#xff0c;分别是苹果&#xff08;apple&#xff09;、梨&#xff08;pear&#xff09;、桔子&#xff08;orange&#xff09;、葡萄&#xff08;grape&#xff09;&#xff0c;单价分别对应为3.00元/公斤、2.50元/公斤、4.10元/公斤、10.20元/公斤。 首先在屏幕…