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

本文深入分析了Android系统中Binder机制的实现原理,包括其作为进程间通信(IPC)的核心作用及远程过程调用(RPC)的功能。详细介绍了Servicemanager如何通过Binder处理服务注册与获取请求,并解释了binder_call函数的工作流程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Android系统--Binder系统具体框架分析(一) - 林凯强 - 博客园  http://www.cnblogs.com/lkq1220/p/6414112.html

 

Binder系统核心:IPC        RPC远程过程调用(调用其他进程的函数)

IPC : Inter-Process Communication, 进程间通信
RPC : Remote Procedure Call, 远程过程调用

IPC

RPC

 

 

 

 

 

 

 


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  (target=0)
// code: 表示要调用servicemanager中的"getservice函数"

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

binder_call分析

库文件binder.c分析:

 

 

binder_call实现:

 

 

 

 

 

 

 

 

 

转载于:https://www.cnblogs.com/zhulinhaibao/p/7069049.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值