匿名共享内存系统

1.驱动初始化处理

匿名共享内存系统_第1张图片
图片发自App

匿名共享内存系统_第2张图片
图片发自App

2.类MemoryHeapBase继承了类BnMemoryHeap,作为binder机制中Server的角色需要实现IMemoryHeap接口,主要功能是实现类IMemoryHeap中成员函数,描述一块匿名共享内存服务。类在文件framework/native/include/binder/Memory/HeapBase.h中定义。

匿名共享内存系统_第3张图片
图片发自App

3.类BpMemoryHeap是类MemoryHeapBase在client端进程的远程访问接口类。

匿名共享内存系统_第4张图片
图片发自App

匿名共享内存系统_第5张图片
图片发自App

可以看到核心代码是通过HEAP_ID从服务端获取到parcel_fd,然后dup,接口mmap来得到自己的共享内存基地址。所谓“匿名”的意思是指driver层在临时文件系统tmpfs中创建一个临时文件,与匿名共享内存对应。

你可能感兴趣的:(匿名共享内存系统)