Linux嵌入式学习-远程过程调用-Binder系统

Posted 叶念西风

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux嵌入式学习-远程过程调用-Binder系统相关的知识,希望对你有一定的参考价值。

 Binder系统的C程序使用示例
IPC : Inter-Process Communication, 进程间通信
RPC : Remote Procedure Call, 远程过程调用

这里我们直接只用android系统中已经实现好的Bindrt系统。

具体源代码在 frameworks\native\cmds\servicemanager\目录下。


service_manager.c :
a. binder_open
b. binder_become_context_manager
c. binder_loop(bs, svcmgr_handler);
   c.1 res = ioctl(bs->fd, BINDER_WRITE_READ, &bwr);
   c.2 binder_parse
          // 解析
          // 处理  : svcmgr_handler
                       SVC_MGR_GET_SERVICE/SVC_MGR_CHECK_SERVICE : 获取服务
                       SVC_MGR_ADD_SERVICE : 注册服务         
          // 回复         

bctest.c
注册服务的过程:
a. binder_open
b. binder_call(bs, &msg, &reply, 0, SVC_MGR_ADD_SERVICE)
                   // 含有服务的名字
                         // 它会含有servicemanager回复的数据
                                 // 0表示servicemanager
                                    // code: 表示要调用servicemanager中的"addservice函数"


获取服务的过程:
a. binder_open
b. binder_call(bs, &msg, &reply, target, SVC_MGR_CHECK_SERVICE)
                   // 含有服务的名字
                         // 它会含有servicemanager回复的数据, 表示提供服务的进程
                                 // 0表示servicemanager
                                    // code: 表示要调用servicemanager中的"getservice函数"
                                   

binder.c (封装好的C函数)





























以上是关于Linux嵌入式学习-远程过程调用-Binder系统的主要内容,如果未能解决你的问题,请参考以下文章

早鸟报名:深入理解Linux RPC - 从Linux RPC到Android Binder

Android Binder 系统学习笔记Binder系统的基本使用方法

Android系统篇之----Binder机制和远程服务调用机制分析

第5课第1节_Binder系统_C程序示例_框架分析

浅淡个人学习嵌入式Linux过程

从mediaserver入手快速理解binder机制(最简单理解binder)