pub fn mmap(
addr: *mut c_void,
len: usize,
prot: i32,
flags: i32,
fd: i32,
offset: i64,
) -> isizeExpand description
mmap - 将文件或设备映射到内存
§参数
addr: 建议的映射起始地址- 如果为 NULL (0),由内核选择地址
- 如果非 NULL,内核会尝试在该地址附近创建映射
- 如果指定了 MAP_FIXED,则必须使用该地址(覆盖现有映射)
- 如果指定了 MAP_FIXED_NOREPLACE,则必须使用该地址(不覆盖现有映射)
len: 映射的长度(字节)prot: 内存保护标志(PROT_READ | PROT_WRITE | PROT_EXEC)flags: 映射标志(MAP_SHARED | MAP_PRIVATE | MAP_ANONYMOUS 等)fd: 文件描述符(目前仅支持匿名映射,必须为 -1)offset: 文件内偏移量(目前仅支持匿名映射,必须为 0)
§返回值
- 成功: 返回映射区域的起始地址
- 失败: 返回 MAP_FAILED (-1)
§支持的特性
- ✅ MAP_ANONYMOUS - 匿名映射
- ✅ MAP_PRIVATE / MAP_SHARED - 私有/共享映射
- ✅ MAP_FIXED - 固定地址映射(覆盖现有)
- ✅ MAP_FIXED_NOREPLACE - 固定地址映射(不覆盖)
- ✅ 地址 hint 机制
§当前限制
- ❌ 文件映射(需要 VFS 支持)
- ❌ MAP_POPULATE(预分配,当前默认立即分配)
- ❌ MAP_NORESERVE(延迟分配,当前默认立即分配)
- ❌ 大页 (MAP_HUGETLB)