struct regmap_device *regmap_device_register//寄存器设备驱动注册
(struct regmap_properties *props,
struct regmap_fops *rops,
struct device *parent,
void *client, void *drvdata)
{
struct regmap_device *rd;
int ret = 0, i;
char device_name[32];
unsigned char data;
pr_info("regmap_device_register: name = %s\n", props->name);
rd = devm_kzalloc(parent, sizeof(*rd), GFP_KERNEL);
//向内核申请内存:devm_kzalloc() 是具有资源管理的 kzalloc()。使用资源管理(resource-managed)函数分配的内存,是会与所属设备相关联。当设备从系统中分离或者设备驱动被卸载,该内存会被自动释放。
if (!rd) {
pr_info("regmap_device memory allocate fail\n");
return NULL;
}
.
.
.
}
设备注册函数过程一般会用到内存申请,如上。下面我们参考资料分析一下过程。
///
前言
Linux Kernel devm_* API源码分析
本文通过对devm_kzalloc函数的实现进行解析,帮助理解devm系列api的用法。
devm系列api的主要特别之处:
使用devm系列申请到的资源可以由系统自动释放,解放双手
一、devm_kzalloc & devm_kfree代码<