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:申请内存空间--》在物理上是不连续的-->kfree
mmap-->vma:用户地址--》vm_addr--->g_buff(内核地址)--》物理地址
2 平台设备驱动框架
设备树--》描述设备硬件资源的一种数据结构--》信息
L
Linux驱动开发:mmap与平台设备驱动框架解析

本文详细介绍了Linux驱动开发中的mmap系统调用,包括其参数和作用,以及如何进行内存映射。同时,文章探讨了平台设备驱动框架,解释了设备与驱动的分离、资源管理,通过实例展示了设备注册、资源添加和驱动获取资源的过程。最后,文章通过LED驱动的示例说明了字符设备驱动框架的应用。
最低0.47元/天 解锁文章
1005

被折叠的 条评论
为什么被折叠?



