91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Linux中devm_kmalloc和devm_kzalloc內核內存分配函數如何使用

發布時間:2021-06-21 18:57:00 來源:億速云 閱讀:678 作者:Leah 欄目:互聯網科技

今天就跟大家聊聊有關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內核內存分配函數如何使用有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注億速云行業資訊頻道,感謝大家的支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

锡林郭勒盟| 永登县| 株洲市| 德化县| 龙井市| 舒城县| 巍山| 郴州市| 六枝特区| 怀集县| 满城县| 黑水县| 旅游| 禹州市| 渭源县| 永清县| 乐平市| 凯里市| 柯坪县| 英超| 涞源县| 赣榆县| 喀喇沁旗| 万年县| 衡东县| 曲周县| 建平县| 泰兴市| 积石山| 榆树市| 辽阳县| 昆山市| 木兰县| 田东县| 台前县| 抚顺县| 仲巴县| 五大连池市| 时尚| 竹山县| 青海省|