1

我一直在通过一些实验学习linux内核。最近我想知道是否可以通过将一个进程的页面插入另一个进程的vma结构来在两个用户空间进程之间共享页面,后者调用mmap和通过 netlink 将地址发送回内核。插入将在驱动程序模块中完成。此测试的原因是两个进程可能不直接相互通信,并且只读内存的重复页面可能是考虑到效率和冗余的错误选择。

经过一番研究,我发现了 vm_insert_page 函数和传统的 remap_pfn_range。但是它在 lxr 中说:

/** 2020 * vm_insert_page - 将单页插入用户 vma

2021 * @vma:要映射到的用户 vma

2022 * @addr: 本页目标用户地址

2023 * @page:源内核页面

2024 *

2025 * 这允许驱动程序插入他们分配的单个页面

2026 * 进入用户 vma。

2027 *

2028 *该页面必须是一个干净整洁的单独内核分配。”

来自 lxr

这是否意味着不可能将现有页面插入另一个 vma?该函数只能与新创建的页面一起调用?我一直认为页面可以与引用计数共享。

4

0 回答 0