Process::self()
1.打开binder 驱动
2.对返回的fd 使用mmap,为binder开辟内存空间保存数据。
defaultServiceManager();
1.创建的是Bpbinder,handler = 0。(因为此时service 作为客户端与servicemanager进行交互。Bpbinder-> 客户端, Bbbindr->服务器,Bpbinder是通过handler标识符找到Bbbinder的)
2.defaultServiceManager返回的是BpServiceManager,它的mRemote的值是Bpbinder,且BpServiceManager实现了IServiceManager的业务逻辑
IPCThreadState:
1.每个线程都有一个IPCThreadState,每个IPCThreadState:都有一个mIn,mOut.mIn用来接收binder设备的数据,mOut用来存出binder发来数据
为service服务的线程:
1.startThreadPool 中新创建的线程是通过joinThreadPool读取binder设备,查看是否有请求
2.主线程也是调用joinThreadPool读取binder设备,查看是否有请求