Binder通信C/S架构
2017-09-21 18:20:27 0 举报
Binder通信C/S架构。。。。。。。。。
作者其他创作
大纲/内容
应用层
具体实现
提供服务
binder_open:打开驱动设备
binder_thread_write()
创建ServiceManager
BpServiceManager实例化
Code
binder_ioctl:执行相应的ioctl操作(BINDER_WRITE_READ)
interface_cast
getContextObject
内存映射
ioctl()
gDefaultServiceManager对象是否存在
mmap()
调用svcmgr_handler
IServiceManager::asInterface
成为上下文的管理者
获取BpBiner对象
Handle
do_add_service注册服务
open_driver
ioctl
IPC层
DECLARE_META_INTERFACE
Client
内核层
Android 应用层
打开Binder设备
do_find_service查询服务
1.注册服务
IMPLEMENT_META_INTERFACE
binder_ioctl()
ProcessState::self
BR协议
Data
3.使用服务
2.获取服务
binder_mmap:申请内存空间
binder_init:初始化字符设备
binder_thread_write()根据BC码,生成相应的BINDER_WORK
创建BpBinder
获取ServiceManager
Server
open()
init进程解析init.rc文件
for 循环,执行ioctl()
Binder驱动设备
binder_link_to_death
ioctl()发送BC_ENTER_LOOPER命令binder驱动
Android 平台层
获取ProcessState对象
获取BpServiceManager
进入循环读写操作
BC协议
启动流程
参数ptr指向BC_ENTER_LOOPER
binder_thread_read()根据BINDER_WORK,生成BR码
lookupHandleLocked
getStrongProxyForHandle
BINDER_KORK_XXX
ServiceManager
binder_mmap()
binder_thread_read()
初始化ProcessState
binder_send_reply
binder_open()
解析Binder信息
defaultServiceManager()
收藏
收藏
0 条评论
下一页
为你推荐
查看更多