pub fn mprotect(addr: *mut c_void, len: usize, prot: i32) -> isizeExpand description
mprotect - 修改内存区域的保护权限
§参数
addr: 要修改权限的起始地址(必须页对齐)len: 要修改权限的长度(字节)prot: 新的保护标志(PROT_READ | PROT_WRITE | PROT_EXEC | PROT_NONE)
§返回值
- 成功: 返回 0
- 失败: 返回 -errno
§注意
- 地址必须页对齐,否则返回 EINVAL
- 范围必须完全在现有映射区域内,否则返回 ENOMEM
- 只能修改通过 mmap 或 brk 创建的用户空间映射
§支持的特性
- ✅ PROT_NONE - 不可访问
- ✅ PROT_READ - 可读
- ✅ PROT_WRITE - 可写(自动包含可读,RISC-V 特性)
- ✅ PROT_EXEC - 可执行
- ✅ 跨多个映射区域的权限修改