1.驅(qū)動初始化處理

圖片發(fā)自簡書App

圖片發(fā)自簡書App
2.類MemoryHeapBase繼承了類BnMemoryHeap,作為binder機制中Server的角色需要實現(xiàn)IMemoryHeap接口,主要功能是實現(xiàn)類IMemoryHeap中成員函數(shù),描述一塊匿名共享內(nèi)存服務(wù)。類在文件framework/native/include/binder/Memory/HeapBase.h中定義。

圖片發(fā)自簡書App
3.類BpMemoryHeap是類MemoryHeapBase在client端進程的遠程訪問接口類。

圖片發(fā)自簡書App

圖片發(fā)自簡書App
可以看到核心代碼是通過HEAP_ID從服務(wù)端獲取到parcel_fd,然后dup,接口mmap來得到自己的共享內(nèi)存基地址。所謂“匿名”的意思是指driver層在臨時文件系統(tǒng)tmpfs中創(chuàng)建一個臨時文件,與匿名共享內(nèi)存對應(yīng)。