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

android binder机制实现

 2010-05-31 14:30:00 来源:WEB开发网   
核心提示:第一部分 Binder的组成1.1 驱动程序部分驱动程序的部分在以下的文件夹中:Java代码 < width="14" height="15" src="http://mintelong.javaeye.com/javascripts/syntaxhighligh

第一部分 Binder的组成

1.1 驱动程序部分驱动程序的部分在以下的文件夹中:

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

kernel/include/linux/binder.h

kernel/drivers/android/binder.c

kernel/include/linux/binder.h kernel/drivers/android/binder.c

binder驱动程序是一个miscdevice,主设备号为10,此设备号使用动态获得(MISC_DYNAMIC_MINOR),其设备的节点为:

/dev/binder

binder驱动程序会在proc文件系统中建立自己的信息,其文件夹为/proc/binder,其中包含如下内容:

proc目录:调用Binder各个进程的内容

state文件:使用函数binder_read_proc_state

stats文件:使用函数binder_read_proc_stats

transactions文件:使用函数binder_read_proc_transactions

transaction_log文件:使用函数binder_read_proc_transaction_log,其参数为binder_transaction_log (类型为struct binder_transaction_log)

failed_transaction_log文件:使用函数binder_read_proc_transaction_log 其参数为

binder_transaction_log_failed (类型为struct binder_transaction_log)

在binder文件被打开后,其私有数据(private_data)的类型:

struct binder_proc

在这个数据结构中,主要包含了当前进程、进程ID、内存映射信息、Binder的统计信息和线程信息等。

在用户空间对Binder驱动程序进行控制主要使用的接口是mmap、poll和ioctl,ioctl主要使用的ID为:

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

#define BINDER_WRITE_READ _IOWR('b', 1, struct binder_write_read)

#define BINDER_SET_IDLE_TIMEOUT _IOW('b', 3, int64_t)

#define BINDER_SET_MAX_THREADS _IOW('b', 5, size_t)

#define BINDER_SET_IDLE_PRIORITY _IOW('b', 6, int)

1 2 3 4 5 6  下一页

Tags:android binder 机制

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