小编and*_*eas的帖子

在内核模块中分配大页面

我正在寻找一种在内核模块中分配大页面(2M或1G)的方法(我正在使用内核版本4.15.0)。

在用户空间中,我可以挂载hugetlbfs文件系统,然后使用分配大页面mmap(请参阅例如https://blog.kevinhu.me/2018/07/01/01-Linux-Hugepages/)。在内核空间中有类似的方法吗?

我知道我可以先在用户空间中分配它们,然后使用get_user_pages,将它们传递给内核,如在内核驱动程序中对宏页面的顺序访问中所述。但是,我正在寻找一种更直接的分配方式,因为我只在内核空间中需要它们。

x86 x86-64 kernel-module linux-kernel huge-pages

5
推荐指数
1
解决办法
193
查看次数

如何在内核模块中使用do_mmap()

我想在内核模块中使用do_mmap()。根据这个问题,这应该是可能的。

这是一个最小的无效示例:

hp_km.c:

#include <linux/module.h>
#include <linux/mm.h>

MODULE_LICENSE("GPL");

static int __init hp_km_init(void) {
   do_mmap(0, 0, 0, 0, 0, 0, 0, 0, 0);
   return 0;
}

static void __exit hp_km_exit(void) {
}

module_init(hp_km_init);
module_exit(hp_km_exit);
Run Code Online (Sandbox Code Playgroud)
Makefile:

obj-m += hp_km.o

all:
    make -C /lib/modules/$(shell uname -r)/build M=$(PWD) modules

clean:
    make -C /lib/modules/$(shell uname -r)/build M=$(PWD) clean
Run Code Online (Sandbox Code Playgroud)

运行make结果WARNING: "do_mmap" [...] undefined!

我需要进行哪些更改hp_km.cMakefile使其生效?

c linux kernel-module linux-kernel

5
推荐指数
1
解决办法
147
查看次数

标签 统计

kernel-module ×2

linux-kernel ×2

c ×1

huge-pages ×1

linux ×1

x86 ×1

x86-64 ×1