mmap

Function mmap 

Source
pub fn mmap(
    addr: *mut c_void,
    len: usize,
    prot: i32,
    flags: i32,
    fd: i32,
    offset: i64,
) -> isize
Expand 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)