ServiceManager作为Binder机制的守护进程,主要用于管理各种系统service,并向client提供获取service代理对象的服务。
一、init启动servicemanager
1 | #frameworks/native/cmds/servicemanager/servicemanager.rc |
二、service_manager的main函数
1 | //frameworks/native/cmds/servicemanager/service_manager.c |
2.1 binder_open函数
1 | //frameworks/native/cmds/servicemanager/binder.c |
2.2 binder_become_context_manager函数
1 | //frameworks/native/cmds/servicemanager/binder.c |
2.2.1 binder_ioctl函数
1 | //kernel/drivers/android/binder.c |
2.2.2 binder_ioctl_set_ctx_mgr函数
1 | //kernel/drivers/android/binder.c |
2.3 binder_loop函数
1 | //frameworks/native/cmds/servicemanager/binder.c |
2.3.1 binder_write函数
1 | //frameworks/native/cmds/servicemanager/binder.c |
2.3.2 binder_ioctl_write_read
1 | //kernel/drivers/android/binder.c |
2.3.3 binder_parse函数
1 | //frameworks/native/cmds/servicemanager/binder.c |
2.3.4 svcmgr_handler函数
1 | //frameworks/native/cmds/servicemanager/service_manager.c |