在Binder中,handle为0是系统ServiceManager。今天看framework的源码,在\base\cmds\servicemanager\service_manager.c中看到如下代码:int main(int argc, char **argv)
{
struct binder_state *bs;
void *svcmgr = BINDER_SERVICE_MANAGER; bs = binder_open(128*1024); if (binder_become_context_manager(bs)) {
LOGE("cannot become context manager (%s)\n", strerror(errno));
return -1;
} svcmgr_handle = svcmgr;
binder_loop(bs, svcmgr_handler);
return 0;
}其中binder_open中分配了128K的内存,但是看了相关的其他代码,并没有发现有地方使用了这128K的内存。既然没有使用,分配这么多内存不是浪费吗?请高手指教,这里分配的内存的用途是什么?
{
struct binder_state *bs;
void *svcmgr = BINDER_SERVICE_MANAGER; bs = binder_open(128*1024); if (binder_become_context_manager(bs)) {
LOGE("cannot become context manager (%s)\n", strerror(errno));
return -1;
} svcmgr_handle = svcmgr;
binder_loop(bs, svcmgr_handler);
return 0;
}其中binder_open中分配了128K的内存,但是看了相关的其他代码,并没有发现有地方使用了这128K的内存。既然没有使用,分配这么多内存不是浪费吗?请高手指教,这里分配的内存的用途是什么?
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货