0

我正在实现一个框架,它将连续的物理内存区域映射到用户空间,同时将特定的虚拟地址返回给用户进程。虽然这适用于较小的 kmalloc() 大小,但不适用于大于 4MB 的连续内存。我已经在 Linux(内核 5.0.21)上启用了 HUGETLB 支持,并且通过使用带有 MAP_HUGETLB 参数的系统 mmap(),我能够向应用程序返回一个 1GB 的大页面。我的问题是,如何实现一个自定义 mmap() 可以将如此大的页面映射到用户?巨页分配背后的机制是什么?我的驱动程序需要为用户分配如此大的连续物理内存并返回一个特定的虚拟地址。非常感谢

4

0 回答 0