
---【binder机制】
文章平均质量分 88
Achillisjack
这个作者很懒,什么都没留下…
展开
-
android binder机制,注册系统服务---Java层注册系统服务
6 Java注册系统服务Java获取的ServiceManager代理是ServiceManagerProxy,ServiceManagerProxy的addService如下,public void addService(String name, IBinder service, boolean allowIsolated) throws RemoteExce原创 2017-06-12 22:15:58 · 644 阅读 · 0 评论 -
android binder机制,注册系统服务---结果返回
5结果返回用户态的Servicemanager进程发送的是BINDER_WRITE_READ命令,需要处理返回的BC_REPLY命令。并且只有写操作,没有读操作,即read_size为0。5.1 servicemanager进程binder驱动1,首先binder驱动的binder_ioctl方法处理BINDER_WRITE_READ命令,前面已经论述了,在此就不赘述。2, b原创 2017-06-12 22:12:27 · 763 阅读 · 0 评论 -
android binder机制,注册系统服务---服务端servicemanager
4服务端servicemanagerservice_manager.c的svcmgr_handler有关注册和获取服务的处理如下,case SVC_MGR_GET_SERVICE: case SVC_MGR_CHECK_SERVICE: s = bio_get_string16(msg, &len); if (s == NULL) {原创 2017-06-12 22:07:40 · 1183 阅读 · 0 评论 -
android binder机制,注册系统服务--服务端servicemanager binder驱动
3 服务端servicemanager binder驱动前面分析过Servicemanager进程中的main方法步骤,1,调用binder_open方法打开binder驱动。2,调用binder_become_context_manager方法注册成为binder服务的大管家。3,调用binder_loop方法进入无限循环, 处理binder驱动发来的请求。 其中bind原创 2017-06-12 22:03:29 · 951 阅读 · 0 评论 -
android binder机制,注册系统服务---客户端Binder驱动
2, 客户端Binder驱动在Binder驱动层,和ioctl()相对的动作是binder_ioctl()函数。binder_ioctl()函数负责在两个进程间收发IPC数据和IPC reply数据。ioctl(文件描述符,ioctl命令,数据类型)(1) 文件描述符,是通过open()方法打开Binder Driver后返回值;(2) ioctl命令和数据类型是一体的,不同的命令原创 2017-06-12 21:57:51 · 674 阅读 · 0 评论 -
android binder机制,注册系统服务---native客户端
前言:前面的准备工作终于完成差不多了,长舒一口气,看下服务的注册。1,native客户端surfaceflinger是android系统中和图形相关的进程,由init进程通过解析init.rc文件创建,对应的文件目录是frameworks/native/services/surfaceflinger。init.rc启动surfaceflinger配置如下,service原创 2017-06-12 21:50:28 · 649 阅读 · 0 评论 -
android binder机制---Java层获取ServiceManager
2, Java层获取ServiceManagerbinder在framework层,采用JNI技术来调用native(C/C++)层的binder架构,从而为上层应用程序提供服务。还是直接从方法的注册和获取来解析。Context中的addService方法首先必须获取ServiceManager代理,然后调用代理的addService方法。ServiceManager的addSer原创 2017-06-12 20:24:44 · 968 阅读 · 0 评论 -
android binder机制---native获取ServiceManager
前言:无论是Java层还是native层,Binder跨进程首先必须获取ServiceManager对象。当然Java层和native层分别有ServiceManager对象。1,native获取ServiceManagerC++(native) 获取Service Manager是通过defaultServiceManager()方法来完成,当进程注册服务(addSe原创 2017-06-12 20:17:20 · 1171 阅读 · 0 评论 -
android binder机制---Binder驱动
4 Binder驱动binder机制到底是如何从代理对象找到其对应的binder实体呢?其实,在binder驱动层,还有个与之相对的结构,叫做binder_proc。示意图如下,Binder驱动是Android专用的,但底层的驱动架构与Linux驱动一样。binder驱动在以misc设备进行注册,作为虚拟字符设备,没有直接操作硬件,只是对设备内存的处理。主要是驱动设备的原创 2017-06-12 20:05:40 · 1487 阅读 · 1 评论 -
android binder机制---ProcessState和线程池
3, ProcessState和线程池 Android系统启动完成后,ActivityManager, PackageManager等各大服务都运行在system_server进程,app应用需要使用系统服务都是通过binder来完成进程之间的通信。 对于binder线程是如何管理的呢,又是如何创建的呢?其实无论是system_server进程,还是app进程,都是原创 2017-06-12 19:54:20 · 10402 阅读 · 0 评论 -
android binder机制---servicemanager进程启动
2, servicemanager进程启动ServiceManager是android系统中Binder IPC通信过程中的守护进程,主要负责系统服务的注册和获取。ServiceManager进程是init进程通过init.rc脚本里的配置文件启动的。init.rc有关的配置如下,service servicemanager /system/bin/servicemanager原创 2017-06-12 19:42:23 · 1121 阅读 · 0 评论 -
android binder机制---概述
1,概述简单地说,Binder是Android平台上的一种跨进程交互技术。在Android的应用层次上,基本上已经没有过去的进程概念了。然而在实现层次,它毕竟还是要建构在一个个进程之上的。实际上,在Android内部,那些支撑应用的组件往往会身处于不同的进程,那么应用的底层必然会牵涉大量的跨进程通信。为了保证通信的高效性,Android提供了Binder机制。从进程角度来看IPC机原创 2017-06-12 19:27:16 · 791 阅读 · 0 评论