Binder 代理对象的获取

2016-5-30 chenhui Binder

本文只讲解基本原理,不贴任何代码。阅读本文前,请先阅读 Binder 通信流程之详细分解 。 当一个 Service 注册到 SM 内后,如果一个 Client 想和他进行通信,那么就要先获得一个引用到 Service 的实体对象的引用对象,以及一个封装这个引用对象的代理对象。 引用对象位于内核空间,代理对象位于用户空间。 怎么获取呢?...

阅读全文>>

评论(0) 浏览(291)

Server Manager 的启动

2016-5-27 chenhui Binder

SM 也是一个应用程序,所以他也有 main() 函数。 int main(int argc, char **argv) { struct binder_state *bs; void *svcmgr = BINDER_SERVICE_MANAGER; // 打开 /dev/binder 并进行映射 bs = bin...

阅读全文>>

评论(0) 浏览(362)

Binder 通信流程之详细分解

2016-5-22 chenhui Binder

阅读本文前,请先阅读:Binder 通信流程 否则陷进去反倒理不清楚。 下面对 Binder 通信流程的每一个步骤的代码进行解释,力求读者能弄懂 Binder 是怎么进行通信的。 === 第一次通信开始 第一步、得到或创建 SM 的代理对象,这样才能和 SM 通信。 在这里要先搞清楚一点:我...

阅读全文>>

评论(0) 浏览(394)

Binder 通信流程

2016-5-21 chenhui Binder

Binder 的一次完整通信可以看成两次或四次通讯。 第一次是 Client 发送数据给 Binder,告知 Binder 该怎么做 第二次是 Binder 发现 Client 要转发数据给别人,于是他把数据发送给对端,并返回 Client 完成信息 第三、四次是 Client 在需要返回值时,对端返回数据给 Binder,再返回给 Client ...

阅读全文>>

评论(0) 浏览(318)

Binder 驱动层数据结构之间的关系

2016-3-16 chenhui Binder

先上神图: 然后再来解释这张神图。 首先,不管是 Client 还是 Service,他都打开 /dev/binder 来使用 Binder 通信,都有一个 binder_proc 结构体。 binder_proc 有两个红黑树,一个存放 binder_node,另一个存放 binder_ref。前...

阅读全文>>

评论(0) 浏览(160)

Copyright ©2015-2016 freehui All rights reserved