WEB开发网
开发学院手机开发Android 开发 android binder机制实现 阅读

android binder机制实现

 2010-05-31 14:30:00 来源:WEB开发网   
核心提示:pluginspage="http://www.macromedia.com/go/getflashplayer">struct binder_write_read {signed long write_size;signed long write_consumed;unsigned long
pluginspage="http://www.macromedia.com/go/getflashplayer">

struct binder_write_read {

signed long write_size;

signed long write_consumed;

unsigned long write_buffer;

signed long read_size;

signed long read_consumed;

unsigned long read_buffer;

};

struct binder_write_read { signed long write_size; signed long write_consumed; unsigned long write_buffer; signed long read_size; signed long read_consumed; unsigned long read_buffer; };

1.2 servicemanager部分 servicemanager是一个守护进程,用于这个进程的和/dev/binder通讯,从而达到管理系统中各个服务的作用。

可执行程序的路径:

/system/bin/servicemanager

开源版本文件的路径:

Java代码 < width="14" height="15" src="http://mintelong.javaeye.com/javascripts/syntaxhighlighter/clipboard_new.swf" pluginspage="http://www.macromedia.com/go/getflashplayer">

frameworks/base/cmds/servicemanager/binder.h

frameworks/base/cmds/servicemanager/binder.c

frameworks/base/cmds/servicemanager/service_manager.c

frameworks/base/cmds/servicemanager/binder.h frameworks/base/cmds/servicemanager/binder.c frameworks/base/cmds/servicemanager/service_manager.c

程序执行的流程:

open():打开binder驱动

mmap():映射一个128*1024字节的内存

ioctl(BINDER_SET_CONTEXT_MGR):设置上下文为mgr

进入主循环binder_loop()

ioctl(BINDER_WRITE_READ),读取

binder_parse()进入binder处理过程循环处理

binder_parse()的处理,调用返回值:

当处理BR_TRANSACTION的时候,调用svcmgr_handler()处理增加服务、检查服务等工作。各种服务存放在一个链表(svclist)中。其中调用binder_等开头的函数,又会调用ioctl的各种命令。

处理BR_REPLY的时候,填充binder_io类型的数据结

1.3 binder的库的部分

binder相关的文件作为Android的uitls库的一部分,这个库编译后的名称为libutils.so,是Android系统中的一个公共库。

上一页  1 2 3 4 5 6 7 8  下一页

Tags:android binder 机制

编辑录入:coldstar [复制链接] [打 印]
赞助商链接