1 mmap---》系统调用函数
void *mmap(void *addr, size_t length, int prot, int flags,
int fd, off_t offset);
作用:将用户空间得地址映射到内核空间
*addr:被映射到内核进程空间得地址--》用户空间地址
lenght:映射地址得长度
prot:内核保护标志,PROT_READ,PROT_WRITE
flags:MAP_SHARED,MAP_PRIVATE
fd:文件描述符
offset:被映射对象内容得起点。0
返回值:映射成功后得用户空间地址
int munmap(void *addr, size_t length);
作用:取消映射
*addr:用户空间地址
lenght:映射地址的长度
返回值:成功为0
int (*mmap) (struct file *, truct vm_area_struct *);
int HelloMmap(struct file *pFile,struct vm_area_struct *vma);
pfile:内核打开的文件
*vma:应用层使用mmap后,内核生成的映射结构体
remap_pfn_range:
int remap_pfn_range(struct vm_area_struct *vma, unsigned long addr, unsigned long pfn, unsigned long size, pgprot_t prot)
*vma:应用层使用mmap后,内核生成的映射结构体
addr:被映射到内核进程空间的起始地址
pfn:内核虚拟地址对应的物理地址的页编号
size:被映射区域的大小
prot:所映射区域的访问方式
kmalloc:申请内存空间--》在物理上是连续的--》kfree
vmalloc:申请内存空间--》在物理上是