Binder机制
2020-02-27 18:49:16 24 举报
Binder机制
作者其他创作
大纲/内容
copy_to_user()
待处理请求列表
binder_transaction
do_add_service()
线程等待列表(wait队列)
rb_root threads
binder_procs
handle-name
用户空间
Client与Server的通信,当有返回结果时,两次Binder调用
保存服务
service_manager.c
Clinet端
Server端
发送请求参数
颜色区分不同业务
BinderProxy
list_head todo
添加事务
......
对应
获取服务(name)
ServiceManger的Binder引用默认是0号引用,无需其它手段获得。Client,Server与SM通信也是Binder调用
响应结果
注册服务(Binder)
拷贝结果到用户空间
binder_loop()
拷贝用户空间数据到内核
成员介绍
与ServiceManager交互逻辑
由于对应关系,最终由do_find_service()执行查询服务请求
已注册服务列表
Binder驱动
do_find_service()
copy_from_user()
server进程每接收到一个请求会入todo列表,并唤醒wait队列线程进行处理
查询服务
Client-Server通信过程
将进程信息保存到链表
发送请求
内核空间
binder_procs是链表结构,每个binder_procs对应一个用户进程
返回结果
内存映射
响应成功
返回代理(handle)
注册服务的执行过程与查询类似,此时Server-ServiceManger关系是Client-Server
收藏
收藏
0 条评论
下一页