函数get_device()用来增加输入参数代表的逻辑设备的引用计数,使引用计数加1,设备的引用计数器是dev->kobj.kref.refcount
的值,即函数更改字段refcount的值。
get_device文件包含
#include <linux/device.h>
get_device函数定义
在内核源码中的位置:linux-3.19.3/drivers/base/core.c
函数定义格式:
struct device *get_device(struct device *dev)
get_device输入参数说明
- 函数
get_device()
的输入参数是struct device结构体类型的指针,代表增加计数的逻辑设备,此结构体在极客笔记函数device_create()的分析中已有详细说明。
get_device返回参数说明
- 函数
get_device()
的返回结果是struct device结构体类型的变量,返回的结果与传入的参数代表的是同一个变量,只是此时变量的引用计数器的值增大了1。
get_device实例解析
函数get_device()和函数put_device()一般配对使用,测试程序及结果分析在此没有列出,详细信息请读者参考极客笔记函数put_device()的分析文档。
函数get_device()会增加设备的引用计数,而此次增加只是想说明函数的作用,然而当设备的引用计数不是0时,设备的删除会出错,所以在增加之后应该人工减小设备的引用计数。函数put_device()用于减少设备的引用计数,为了保证安全,在函数get_device()之后调用都应使用函数put_device()进行设备的引用计数减少操作。