6. 内存映射
概述
创建一个映射
#include <sys/mman.h>
/*
@brief 创建一个内存映射
@param addr 映射被放置的虚拟地址,一般取 NULL,让内核选择一个合适的地址
非 NULL 时,需要内核会为其舍入到最近的一个分页边界处,并且不能与现有映射冲突
@param length 指定了映射的字节数,会被提升为分页大小的倍数
@param prot 位掩码,映射的保护信息
- PROT_NONE 区域无法访问
- PROT_READ 区域内容可读取
- PROT_WRITE 区域内容可修改
- PROT_EXEC 区域内容可执行
@param flags 控制映射操作的选项位掩码
- MAP_PRIVATE 创建私有映射
- MAP_SHARED 创建共享映射
- MAP_ANONYMOUS 创建匿名映射
@param fd 文件描述符,与 offset 一起用于文件映射,确定映射的开始位置
@param offset 文件偏移量,匿名映射将忽略这两个参数,也需要是分页大小的倍数
@return 成功返回映射的地址,否则返回 MAP_FAILED
*/
void *mmap(void *addr, size_t length, int prot, int flags, int fd, off_t offset);解除映射区域
同步映射区域
最后更新于
