中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

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

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

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

库尔勒市| 随州市| 肇源县| 儋州市| 涟源市| 东山县| 乌拉特后旗| 丹凤县| 玉山县| 盐山县| 桂林市| 南开区| 远安县| 彩票| 静安区| 雅安市| 齐齐哈尔市| 都匀市| 达拉特旗| 德清县| 醴陵市| 惠来县| 普定县| 临桂县| 古田县| 田阳县| 广昌县| 桐乡市| 武清区| 广河县| 眉山市| 六安市| 宁晋县| 宁南县| 安庆市| 吐鲁番市| 射洪县| 黑河市| 上林县| 石林| 朝阳市|