91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

c++ binder的調用流程是什么

發布時間:2022-03-25 09:31:39 來源:億速云 閱讀:234 作者:iii 欄目:互聯網科技

這篇“c++ binder的調用流程是什么”文章的知識點大部分人都不太理解,所以小編給大家總結了以下內容,內容詳細,步驟清晰,具有一定的借鑒價值,希望大家閱讀完這篇文章能有所收獲,下面我們一起來看看這篇“c++ binder的調用流程是什么”文章吧。

本文主要接收客戶端通過binder調到服務端的過程,也就是從transact到onTransact的過程

客戶端發的請求

Step 1:transact一步會調用remote的transact,而該remote對象是通過ServiceManager獲取回來的一個IBinder實例

Step 2:BinderProxy:transact:調用transactNative

Step 3:android_util_Binder:android_os_BinderProxy_transact

Step 4:BpBinder:transact

Step 5:IPCThreadState:transact,調用writeTransactionData把數據寫到mOut,然后調用waitForResponse,會調用talkWithDriver將數據寫到底層驅動,如果有結果會把結果讀取到mIn

服務端的處理:

IPCThreadState:joinThreadPool,這里有一個循環,通過getAndExecuteCommand不停地讀取底層的數據并執行,客戶端發過來的命令時,處理的是BR_TRANSACTION,調用BBinder的transact進行處理

Step 6:  BBinder:transact->onTransact,這一次是C層的onTransact,java層的實現也是通過C++層的封裝來實現的

binder的原理簡單來講是兩個進程有一塊內存映射到同塊物理內存,如果不映射的話,那么兩個進程使用的是邏輯地址,的物理內存是不會映射到同一塊內存的,因此映射并內存共享內存來實現通信,是binder的本質工作。

以上就是關于“c++ binder的調用流程是什么”這篇文章的內容,相信大家都有了一定的了解,希望小編分享的內容對大家有幫助,若想了解更多相關的知識內容,請關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

靖边县| 沂源县| 商南县| 彝良县| 阳原县| 永年县| 紫阳县| 江津市| 乌拉特前旗| 景德镇市| 临朐县| 鄂托克前旗| 新宾| 蛟河市| 广东省| 乌审旗| 石棉县| 洛隆县| 潼关县| 隆子县| 太保市| 永平县| 罗定市| 连平县| 竹溪县| 旅游| 玛纳斯县| 米脂县| 阳西县| 南宫市| 龙川县| 万荣县| 凤山市| 绍兴市| 定边县| 潜江市| 洛川县| 新建县| 老河口市| 宜兰县| 望江县|