【问题标题】:Does devm_kzalloc give contiguous memory?devm_kzalloc 是否提供连续内存?
【发布时间】:2019-10-21 05:45:43
【问题描述】:

浏览 devm_kzalloc 的手册页后,我看到 devm_kzalloc 是“托管 kzalloc。使用此函数分配的内存会在驱动程序分离时自动释放。与所有其他 devres 资源一样,保证对齐是 unsigned long long”。

我也浏览过kzalloc的man page,但我仍然怀疑分配的内存是否是连续的。

我正在做一些移植工作,我看到 devm_kzalloc 被移植到 devm_kzalloc_contiguous。 因此,我试图了解是否需要连续内存。

【问题讨论】:

  • devm_kzalloc_contiguous 来自哪里?主线 Linux 内核源码中没有这样的功能。
  • @IanAbbott 是的,在主线 Linux 中没有 devm_kzalloc_contiguous,我参与了一些从 Linux 到 的移植工作,其中 devm_kzalloc 被映射到 devm_kzalloc_contiguous。我的意图是理解为什么是连续的。

标签: linux linux-kernel linux-device-driver


【解决方案1】:

在 Greg Kroah-Hartman、Alessandro Rubini、Jonathan Corbet 所著的“Linux Device Drivers, 3rd Edition”一书中,kzalloc 分配的内存是“在物理内存中连续的”。

因此,我假设 devm_kzalloc 内存由 kzalloc 管理,因此 devm_kzalloc 内存必须是连续的。

【讨论】:

    猜你喜欢
    • 2019-06-10
    • 2023-04-08
    • 2011-10-01
    • 1970-01-01
    • 2010-10-12
    • 1970-01-01
    • 1970-01-01
    • 2016-02-04
    相关资源
    最近更新 更多