原创 Binder驅動之內存映射全解

Binder通過open調用打開後,需要用戶態進程需調用mmap進行內存映射。mmap系統調用,經過VFS最終會調用到binder驅動註冊的binder_mmap函數。這裏我們將揭開Binder通信高效的本質原因,:) 一 內存映

原创 Binder驅動之進程間通信及設置

銜接上文Binder驅動之設備控制 – 概述&數據結構 。這篇文章將深入Binder驅動實現進程間通信的核心,揭開Binder通信的神祕面紗, 😃 1. binder_ioctl Binder驅動沒有提供read/write接口

原创 Binder驅動之設備控制 -- 概述&數據結構

由於這部分內容相對複雜,我們將其拆解爲幾部分來講解,這裏我們先來了解一下背景知識和相關的基礎數據結構。 1. 背景 Binder做爲Android中進程間高效通信的核心組件,其底層是以misc設備驅動的形式實現的,但它本身並沒有實

原创 Binder驅動之binder_buffer的分配與回收

一 相關的數據結構 1.1 struct binder_proc中的相關成員 struct binder_proc { … struct list_head buffers; /*所有binder_buffer的鏈

原创 Binder驅動初始化 -- binder_init

一 Binder驅動初始化binder_init (kernel/drivers/android/binder.c) static int __init binder_init(void)

原创 打開Binder設備 -- binder_open

一 binder設備打開的函數實現 binder_open 路徑:kernel/drivers/android/binder.c static int binder_open(struct inode *nodp, struct