struct kref 说明
来源:互联网 发布:阿里云售后电话 编辑:程序博客网 时间:2024/06/03 22:20
1 数据结构
struct kref {
atomic_t refcount;
};
refcount:原子引用计数
2 函数说明
void kref_set(struct kref *kref, int num);
函数功能:设置引用计数的值
参数说明:kref 引用计数的指针
num 计数值
返回值:无
void kref_init(struct kref *kref);
函数功能:初始化引用计数,设置值为1
参数说明:kref 引用计数的指针
返回值:无
void kref_get(struct kref *kref)
函数功能:引用计数值加1
参数说明:kref 引用计数的指针
返回值:无
int kref_put(struct kref *kref, void (*release)(struct kref *kref))
函数功能:引用计数值减1
参数说明:kref 引用计数的指针
release 回调函数指针,当计数值为0 时调用这个回调函数
返回值:无
示例代码
struct testdata
{
struct kref Myref;
int a,b,c;
}
struct testdata * Mydata;
void callback(struct kref *kref)
{
struct testdata *ptr =container_of(kref, struct testdata, Myref); ;
printk("release called\n");
kfree(ptr);
}
void test(void )
{
Mydata = kmalloc(sizeof(struct testdata), GFP_KERNEL);
kref_init(&(Mydata->Myref));//引用计数为1
kref_get(&(Mydata->Myref));//引用计数为2
//处理数据
//处理完成
kref_put(&(Mydata->Myref), callback);//引用计数为1
//退出
kref_put(&(Mydata->Myref), callback);//引用计数为0,回调函数被调用,释放内存
}
struct kref {
atomic_t refcount;
};
refcount:原子引用计数
2 函数说明
void kref_set(struct kref *kref, int num);
函数功能:设置引用计数的值
参数说明:kref 引用计数的指针
num 计数值
返回值:无
void kref_init(struct kref *kref);
函数功能:初始化引用计数,设置值为1
参数说明:kref 引用计数的指针
返回值:无
void kref_get(struct kref *kref)
函数功能:引用计数值加1
参数说明:kref 引用计数的指针
返回值:无
int kref_put(struct kref *kref, void (*release)(struct kref *kref))
函数功能:引用计数值减1
参数说明:kref 引用计数的指针
release 回调函数指针,当计数值为0 时调用这个回调函数
返回值:无
示例代码
struct testdata
{
struct kref Myref;
int a,b,c;
}
struct testdata * Mydata;
void callback(struct kref *kref)
{
struct testdata *ptr =container_of(kref, struct testdata, Myref); ;
printk("release called\n");
kfree(ptr);
}
void test(void )
{
Mydata = kmalloc(sizeof(struct testdata), GFP_KERNEL);
kref_init(&(Mydata->Myref));//引用计数为1
kref_get(&(Mydata->Myref));//引用计数为2
//处理数据
//处理完成
kref_put(&(Mydata->Myref), callback);//引用计数为1
//退出
kref_put(&(Mydata->Myref), callback);//引用计数为0,回调函数被调用,释放内存
}
0 0
- struct kref 说明
- struct kref
- struct kref
- kref
- kref
- kref
- sizeof(struct)说明
- struct timeval结构体说明
- struct 和 typedef struct 的说明和注意事项。
- Python中struct.pack()和struct.unpack()用法详细说明
- 记录生命周期的kref
- 记录生命周期的kref
- linux kref详解
- kref两个疑问
- 记录生命周期的kref
- 记录生命周期的kref
- 记录生命周期的kref
- 关于getifaddrs()和struct ifaddrs的说明
- 树状数组
- 设计模式之---前言
- java环境的配置
- 2017年网络赚钱项目:幻城国际
- [BZOJ1572][Usaco2009 Open]工作安排Job(贪心+堆)
- struct kref 说明
- 奇异值的物理意义是什么?
- 别开发APP了,这不是在开玩笑
- Ubuntu下查看Nvidia显卡驱动
- Elasticsearch logstash kibane 搭建
- hdu1677—Nested Dolls(贪心)
- 自定义一个下拉刷新
- 社交软件有哪些
- 2017年大肉!幻城国际