android binder 處理序間通訊機制1-binder 驅動程式

來源:互聯網
上載者:User

標籤:android   io   ar   使用   sp   檔案   資料   on   cti   

以下內容只大概列個提綱,若要明白其中細節,還請看源碼:

申明:本人菜鳥,希望得到大神指點一二,餘心足已

binder 裝置:/dev/binder

binder 處理序間通訊涉及的四個角色:

Client  Service  ServiceManager  Binder驅動程式

一,Binder驅動程式

源碼位置:kernel/[vendor]/[codename]/drivers/staging/android/binder.c

              kernel/[vendor]/[codename]/drivers/staging/android/binder.h

              等等相關檔案。

1.基礎資料結構

struct binder_work : 描述待處理的工作項目

 

struct binder_node:  描述一個binder實體物件,每一個Service組件在Binder驅動程式中都對應一個Binder實體物件,用來描述它在核心中的狀態。

struct binder_ref_death:  描述一個Service組件的死亡接收通知

struct binder_ref  :  描述一個Binder引用對象,每一個Client組件在Binder驅動程式中都對應有一個Binder引用對象,用來描述它在核心中的狀態。

 

struct binder_buffer : 描述一個核心緩衝區,用來在進程間傳輸資料。每一個使用Binder處理序間通訊機制的進程,在Binder驅動程式中都有一個核心緩衝區列表,用來儲存Binder驅動程式為它分配的核心緩衝區。

struct binder_proc : 用來描述一個正在使用Binder通訊機制的進程,在進程調用open開啟/dev/binder時,Binder驅動程式為進程建立該該結構體。

struct binder_thread : 描述Binder線程池中的一個線程。

 

struct binder_transaction : 描述處理序間通訊過程

struct binder_write_read : 描述處理序間通訊過程中傳輸的資料,包括輸入和輸出資料。

enum BinderDriverCommandProtocol : 定義了輸入(Binder驅動)的命令協議代碼,在向Binder寫資料時使用。

enum BinderDriverReturnProctocol: 定義了輸出(Binder驅動)的返回協議代碼,在從Binder讀返回結果時使用。

 

struct binder_ptr_cookie : 描述一個Binder實體物件或一個Service組件的死亡接收通知。

 

stuct binder_transaction_data : 描述處理序間通訊過程中所傳輸的資料,會作為命令協議代碼BC_TRANSACTION和BC_REPLY的參數使用。

 

2.Binder 使用流程:

初始化:binder_init  

    在目標裝置上建立/proc/binder/proc目錄

    每一個使用Binder機制通訊的進程都在該目錄下有對應的檔案,通過該檔案可以讀取到進程的Binder線程池,Binder實體物件,Binder引用對象及核心緩衝區等資訊

      還建立了 state states transactions transaction_log failed_taransaction_log 檔案,記錄Binder驅動程式運行情況。

Binder裝置開啟: binder_open

    為進程建立binder_proc結構體,並加入到全域hash隊列binder_procs中。

Binder裝置檔案記憶體映射:binder_mmap

    為進程分配核心緩衝區,以便它可以用來傳輸處理序間通訊資料。

 

3. 核心緩衝區的管理:

分配核心緩衝區:binder_alloc_buf

釋放核心緩衝區:binder_free_buf

查詢核心緩衝區:binder_buffer_lookup

android binder 處理序間通訊機制1-binder 驅動程式

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.