service_manager.c :
struct binder_state *bs;
bs = binder_open(128*1024);
a. binder_open
b. binder_become_context_manager
c. binder_loop(bs, svcmgr_handler);
void binder_loop(struct binder_state *bs, binder_handler func)
Binder.c
c.2 binder_parse
res = binder_parse(bs, 0, (uintptr_t) readbuf, bwr.read_consumed, func);
int binder_parse(struct binder_state *bs, struct binder_io *bio,
uintptr_t ptr, size_t size, binder_handler func)
{
// 解析
// 处理 : svcmgr_handler
binder_loop(bs, svcmgr_handler);
int svcmgr_handler(struct binder_state *bs,
struct binder_transaction_data *txn,
struct binder_io *msg,
struct binder_io *reply)
SVC_MGR_GET_SERVICE/SVC_MGR_CHECK_SERVICE : 获取服务
SVC_MGR_ADD_SERVICE : 注册服务
// 回复
bctest.c
注册服务的过程: