Linux 内核 通用API get_device

目录

1 .linux内核 get_device

2 .get_device 代码实现:

3.举例:


1 .linux内核 get_device

在Linux内核中,get_device 是一个函数,用于增加一个设备的引用计数。引用计数是一种计数机制,用于跟踪一个对象被多少个地方引用以便在不再需要该对象时能够安全地释放它设备是内核中的重要资源,可能被多个模块或代码路径共享因此需要确保在使用设备期间,设备不会意外地被释放

2 .get_device 代码实现:

/**
 * get_device - increment reference count for device.
 * @dev: device.
 *
 * This simply forwards the call to kobject_get(), though
 * we do take care to provide for the case that we get a NULL
 * pointer passed in.
 */
struct device *get_device(struct device *dev)
{
	return dev ? kobj_to_dev(kobject_get(&dev->kobj)) : NULL;
}
EXPORT_SYMBOL_GPL(get_device);

/**
 * put_device - decrement reference count.
 * @dev: device in question.
 */
void put_device(struct device *dev)
{
	/* might_sleep(); */
	if (dev)
		kobject_put(&dev->kobj);
}
EXPORT_SYMBOL_GPL(put_device);

它接受一个指向设备结构体的指针作为参数,并在引用计数上增加。如果成功,函数将返回传入的设备指针,否则返回 NULL。通过调用这个函数,调用者表示它正在使用该设备,并希望确保在使用期间设备不会被释放。

在使用设备之前,通常会调用 get_device 来增加引用计数,以保证设备在使用期间不会被释放。当使用完成后,通常会调用 put_device 函数来减少引用计数,以允许设备在不再需要时被释放。

3.举例:

struct device *dev = ...; // 获取设备指针
get_device(dev); // 增加引用计数

// 使用设备

put_device(dev); // 减少引用计数,允许设备在不再需要时被释放

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值