Binder系统_c++实现_内部机制
程序员文章站
2024-03-23 23:28:58
...
一、test_server提供hello服务
test_serer为每一个服务提供一个flag_binder_object结构体这个结构体里边的binder成员不同对于每个服务。
调用ioctl发送数据。flag_binder_object+服务名字,handle(0)。
调用进入内核驱动程序对每一个flag_binder_object构造binder_ node节点里的ptr等于flag_binder_object的binder成员。驱动程序根据handle找到SM把数据发给SM并且创建binder_ref结构体。这个结构体中有desc和binder_node指针
sm记录服务的名字和desc值。。应用层有一个链表每项对应一个名字和handle值
二、test_client
构造数据调用ioctl进入驱动
驱动程序根据handle找到SM把数据就给它
SM从链表里找到对应的项找到handle返回数据,数据里有flag_binder_object结构体中的联合体成员
union {
void *binder; /* local object */
signed long handle; /* remote object */
};
返回handle。驱动发现数据含有这个结构体type是handle然后根据handle找到binder_ref然后找到node最后为test_client也建立binder_ref 链表desc=1 node=前边的node。
test_client怎么使用HelloService服务
构造数据进入驱动根据handle找到ref现在是在client进程刚才不是已经分析了client的ref怎么来的吗。然后找到server并且在数据中设置ptr cookie这两个东西等于binder_node的ptrcookie
server根据ptr cookie知道你想调用哪个服务再根据code值找到到底调用哪个函数。
推荐阅读
-
Binder系统_c++实现_内部机制
-
meson是用Python语言开发的构建工具,编译需要Ninja(用C++实现)命令。Meson 旨在开发最具可用性和快速的构建系统。
-
使用simple_flow实现实时系统的监控 博客分类: simple_flowc++ c++系统监控simple_flow流式计算
-
win7及以上系统C++实现Hook explorer文件级监控复制、剪切和删除操作
-
Android系统进程间通信(IPC)机制Binder中的Server和Client获得Service Manager接口之路
-
ASP.NET 计划任务实现方法(不使用外接程序,.net内部机制实现)
-
Android系统进程间通信Binder机制在应用程序框架层的Java接口源代码分析
-
Android系统进程间通信(IPC)机制Binder中的Client获得Server远程接口过程源代码分析
-
Android系统进程间通信(IPC)机制Binder中的Server启动过程源代码分析
-
Android系统进程间通信(IPC)机制Binder中的Server启动过程源代码分析