adriod HAL层 内核空间与用户空间内存共享
2011-11-02 09:18
246 查看
1、内核部分 unsignedlonggMmapAddr; unsignedlonglMmapAddr; staticintxxx_mmap(structfile*filp,structvm_area_struct*vma) { vma->vm_pgoff=((unsignedlong)virt_to_phys(gMmapAddr))>>PAGE_SHIFT; printk("vma->vm_pgoff=%lx\n",vma->vm_pgoff); if(remap_pfn_range(vma,vma->vm_start,vma->vm_pgoff,sizeof(gMmapAddr),vma->vm_page_prot)) { printk("remap_pfn_rangeerror\n"); return-EAGAIN; } return0; } staticint__initshareMmap_init(void) {
gMmapAddr=PAGE_ALIGN((UINT32)lMmapAddr);//页对齐,重要
return0;
}
EXPORT_SYMBOL_GPL(gMmapAddr);
这后可以引用gMmapAddr
===================================================================================================================================
===================================================================================================================================
2、应用层
unsignedlong*comAddr;
//打开和共享内存驱动
fd=open("/dev/map",O_RDWR);
if(fd<0)
{
returnFALSE;
}
comAddr=(unsignedlong*)mmap(NULL,sizeof(unsignedlong),PROT_READ|PROT_WRITE|PROT_EXEC,MAP_SHARED,fd,0);
相关文章推荐
- Linux的内核空间和用户空间通过内存共享来进行通信的实现
- 使用mmap函数进行内核空间和用户空间的共享内存通信
- 内核与用户空间共享内存之mmap
- 基于NETLINK的内核与用户空间共享内存的实现
- 基于NETLINK的内核与用户空间共享内存的实现
- 使用mmap函数进行内核空间和用户空间的共享内存通信
- 内核和用户空间共享内存的实现例程-proc和mmap(zt)
- 内核和用户空间共享内存【讨论贴】
- 使用mmap函数进行内核空间和用户空间的共享内存通信
- 使用mmap函数进行内核空间和用户空间的共享内存通信
- 内核与用户空间共享内存之mmap
- 使用mmap函数进行内核空间和用户空间的共享内存通信
- 内核与用户空间共享内存
- 使用mmap函数进行内核空间和用户空间的共享内存通信
- 内核和用户空间共享内存的实现例程-proc和mmap
- 内核与用户空间共享内存之mmap
- 使用mmap函数进行内核空间和用户空间的共享内存通信
- 内核与用户空间共享内存之mmap
- 在FreeBSD 用户空间与内核空间使用内存共享
- 使用mmap函数进行内核空间和用户空间的共享内存通信