Linux中devm_kmalloc和devm_kzalloc内核内存分配函数如何使用
发表于:2025-12-01 作者:千家信息网编辑
千家信息网最后更新 2025年12月01日,今天就跟大家聊聊有关Linux中devm_kmalloc和devm_kzalloc内核内存分配函数如何使用,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以
千家信息网最后更新 2025年12月01日Linux中devm_kmalloc和devm_kzalloc内核内存分配函数如何使用
今天就跟大家聊聊有关Linux中devm_kmalloc和devm_kzalloc内核内存分配函数如何使用,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。
一、devm_kmalloc
文件:drivers/base/devres.c,定义如下:
/** * devm_kmalloc - Resource-managed kmalloc * @dev: Device to allocate memory for * @size: Allocation size * @gfp: Allocation gfp flags * * Managed kmalloc. Memory allocated with this function is * automatically freed on driver detach. Like all other devres * resources, guaranteed alignment is unsigned long long. * * RETURNS: * Pointer to allocated memory on success, NULL on failure. */void * devm_kmalloc(struct device *dev, size_t size, gfp_t gfp){ struct devres *dr; /* use raw alloc_dr for kmalloc caller tracing */ dr = alloc_dr(devm_kmalloc_release, size, gfp, dev_to_node(dev)); ... set_node_dbginfo(&dr->node, "devm_kzalloc_release", size); devres_add(dev, dr->data); return dr->data;}devm_kmalloc()函数通过alloc_dr() 申请设备资源,alloc_dr()调用流程如下:
alloc_dr()-> ## devres.c kmalloc_node_track_caller()-> ## slab.h kmalloc_track_caller()-> ## slab.h __kmalloc_track_caller()-> ## salb.c __do_kmalloc() ## 类似kmalloc实现
然后通过devres_add()添加到设备资源列表中。
后续在设备资源管理(device resource management)中详细介绍。
二、devm_kzalloc
文件:include/linux/device.h,定义如下:
static inline void *devm_kzalloc(struct device *dev, size_t size, gfp_t gfp){ return devm_kmalloc(dev, size, gfp | __GFP_ZERO);}devm_kzalloc()函数使用的参数和返回值同devm_kmalloc()。区别:内存分配成功后清零。
注:
1)devm_kmalloc()和devm_kzalloc()是具有资源管理的kmalloc()和kzalloc()。与所属设备关联,在probe函数中使用。当设备驱动被卸载时,该内存被自动释放,也可使用devm_kfree()函数直接释放。
2)kmalloc()和kzalloc()申请的内存必须调用kfree()释放。
三、devm_kfree
文件:drivers/base/devres.c,定义如下:
/** * devm_kfree - Resource-managed kfree * @dev: Device this memory belongs to * @p: Memory to free * * Free memory allocated with devm_kmalloc(). */void devm_kfree(struct device *dev, void *p){ int rc; rc = devres_destroy(dev, devm_kmalloc_release, devm_kmalloc_match, p); WARN_ON(rc);}看完上述内容,你们对Linux中devm_kmalloc和devm_kzalloc内核内存分配函数如何使用有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注行业资讯频道,感谢大家的支持。
函数
内存
设备
资源
分配
内容
文件
内核
资源管理
管理
成功
参数
所属
更多
流程
知识
篇文章
行业
设备驱动
资讯
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
国网网络安全培训通讯稿
邹平公司管理oa软件开发公司
我的世界网络安全宣传语
软件开发怎么适配苹果
上海软件开发软件有哪些
先学c语言还是网络安全
《网络安全法》的立法目的
材料化学领域外文期刊常用数据库
华为服务器gpu供电接口
数据库单个的数据是以什么存放的
企业服务器产品经理
大禹网络安全产品
芷江网络安全宣传周
跨境服务器
数据库发布变更
爱墨瑞德数据库
数据库的安全性体现在哪方面
画多字少的网络安全手抄报
作为服务器的电脑有几台
创建学生管理数据库sql
关系数据库xml查询
烟台网络安全工程师招聘
天使之战服务器端
如何辨识是不是服务器内存条
mix修图软件开发
金融行业用到的网络技术
2020 数据库市场
服务器固定外网安全
数据库系统的结构和优点
怎样通过域名找到云服务器