真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

Linux中devm_kmalloc和devm_kzalloc內(nèi)核內(nèi)存分配函數(shù)如何使用

今天就跟大家聊聊有關(guān)Linux中devm_kmalloc和devm_kzalloc內(nèi)核內(nèi)存分配函數(shù)如何使用,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結(jié)了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。

我們提供的服務(wù)有:網(wǎng)站設(shè)計(jì)制作、成都做網(wǎng)站、微信公眾號(hào)開(kāi)發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認(rèn)證、富源ssl等。為成百上千企事業(yè)單位解決了網(wǎng)站和推廣的問(wèn)題。提供周到的售前咨詢和貼心的售后服務(wù),是有科學(xué)管理、有技術(shù)的富源網(wǎng)站制作公司

一、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()函數(shù)通過(guò)alloc_dr() 申請(qǐng)?jiān)O(shè)備資源,alloc_dr()調(diào)用流程如下:

alloc_dr()->                                   ## devres.c    kmalloc_node_track_caller()->               ## slab.h        kmalloc_track_caller()->                ## slab.h            __kmalloc_track_caller()->          ## salb.c                __do_kmalloc()                  ## 類(lèi)似kmalloc實(shí)現(xiàn)

然后通過(guò)devres_add()添加到設(shè)備資源列表中。

后續(xù)在設(shè)備資源管理(device resource management)中詳細(xì)介紹。

二、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()函數(shù)使用的參數(shù)和返回值同devm_kmalloc()。區(qū)別:內(nèi)存分配成功后清零。

注:

1)devm_kmalloc()devm_kzalloc()是具有資源管理的kmalloc()kzalloc()。與所屬設(shè)備關(guān)聯(lián),probe函數(shù)中使用。當(dāng)設(shè)備驅(qū)動(dòng)被卸載時(shí),該內(nèi)存被自動(dòng)釋放,也可使用devm_kfree()函數(shù)直接釋放。

2)kmalloc()kzalloc()申請(qǐng)的內(nèi)存必須調(diào)用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);}

看完上述內(nèi)容,你們對(duì)Linux中devm_kmalloc和devm_kzalloc內(nèi)核內(nèi)存分配函數(shù)如何使用有進(jìn)一步的了解嗎?如果還想了解更多知識(shí)或者相關(guān)內(nèi)容,請(qǐng)關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝大家的支持。


新聞名稱(chēng):Linux中devm_kmalloc和devm_kzalloc內(nèi)核內(nèi)存分配函數(shù)如何使用
鏈接URL:http://weahome.cn/article/iipsjs.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部