【发布时间】:2021-09-18 17:27:25
【问题描述】:
我想使用 userfaultfd 功能的写保护模式,但它仅在 Linux 5.11 中实现。 我有内核 5.4 的 ubuntu 20,所以我从源代码安装了 5.11 版 Linux,但是当我在安装的版本上重新启动并尝试在 c 用户程序中使用写保护模式时,宏(例如,UFFDIO_WRITEPROTECT)似乎仍然没有定义.而且我验证了 userfaultfd 不是一个模块(正在执行 lsmod)。
另一方面,如果我在调度程序中进行修改只是为了测试(比如说在 kernel/sched/core.c:context_switch 中),那么修改会被考虑在内,因为这是在内核中,但是用户空间的修改不是,我很困惑。
userfaultfd.c 文件位于内核的 fs/ 目录中。 那么请问这是我在编译过程中缺少的东西吗(make menuconfig,make,make modules_install,make)?
【问题讨论】:
-
in a c user program the macros那么你是否在程序中包含了新的 linux 头文件? -
我包含了从 5.4 修改为 5.11 的 userfaultfd.h 库