【android】binder机制 binder协议
2013-02-03 10:14
309 查看
(关于_IOWR,_IOW,_IOR,_IO请参考linux命令码(_IO宏) )
一.设备文件/dev/binder ioctl命令
二.binder_thread_write的命令
三.binder_thread_read的命令
可能存在错误理解,在分析完binder驱动后修正
一.设备文件/dev/binder ioctl命令
#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) //未实现 #define BINDER_SET_CONTEXT_MGR _IOW('b', 7, int) //设置binder上下文管理者 #define BINDER_THREAD_EXIT _IOW('b', 8, int) //删除线程信息 #define BINDER_VERSION _IOWR('b', 9, struct binder_version) //返回版本
二.binder_thread_write的命令
enum BinderDriverCommandProtocol { //binder命令协议 BC_TRANSACTION = _IOW('c', 0, struct binder_transaction_data), //写入请求命令 BC_REPLY = _IOW('c', 1, struct binder_transaction_data), //写入回复命令 BC_ACQUIRE_RESULT = _IOW('c', 2, int), //未实现 BC_FREE_BUFFER = _IOW('c', 3, int), //释放binder_buffer BC_INCREFS = _IOW('c', 4, int), //增加(弱指针)binder_ref计数 BC_ACQUIRE = _IOW('c', 5, int), //增加(强指针)binder_ref计数 BC_RELEASE = _IOW('c', 6, int), //减少(强指针)binder_ref计数 BC_DECREFS = _IOW('c', 7, int), //减少(弱指针)binder_reg计数 BC_INCREFS_DONE = _IOW('c', 8, struct binder_ptr_cookie), //BR_INCREFS处理完毕 BC_ACQUIRE_DONE = _IOW('c', 9, struct binder_ptr_cookie), //BR_ACQUIRE处理完毕 BC_ATTEMPT_ACQUIRE = _IOW('c', 10, struct binder_pri_desc), //未实现 BC_REGISTER_LOOPER = _IO('c', 11), //线程已建立 BC_ENTER_LOOPER = _IO('c', 12), //线程进入循环 BC_EXIT_LOOPER = _IO('c', 13), //线程退出循环 BC_REQUEST_DEATH_NOTIFICATION = _IOW('c', 14, struct binder_ptr_cookie),//请求接收binder实体死亡通知 BC_CLEAR_DEATH_NOTIFICATION = _IOW('c', 15, struct binder_ptr_cookie), //清除binder实体死亡通知 BC_DEAD_BINDER_DONE = _IOW('c', 16, void *), //通知驱动binder实体死亡通知已收到 };
三.binder_thread_read的命令
enum BinderDriverReturnProtocol { //binder返回协议 BR_ERROR = _IOR('r', 0, int), //发生错误 BR_OK = _IO('r', 1), //操作完成 BR_TRANSACTION = _IOR('r', 2, struct binder_transaction_data), //读到的是请求命令 BR_REPLY = _IOR('r', 3, struct binder_transaction_data), //读到的是回复命令 BR_ACQUIRE_RESULT = _IOR('r', 4, int), //未实现 BR_DEAD_REPLY = _IO('r', 5), //线程或进程死亡 BR_TRANSACTION_COMPLETE = _IO('r', 6), //数据传输完成 BR_INCREFS = _IOR('r', 7, struct binder_ptr_cookie), //增加(弱指针)binder_ref计数 BR_ACQUIRE = _IOR('r', 8, struct binder_ptr_cookie), //增加(强指针)binder_ref计数 BR_RELEASE = _IOR('r', 9, struct binder_ptr_cookie), //减少(强指针)binder_ref计数 BR_DECREFS = _IOR('r', 10, struct binder_ptr_cookie), //减少(弱指针)binder_ref计数 BR_ATTEMPT_ACQUIRE = _IOR('r', 11, struct binder_pri_ptr_cookie), //未实现 BR_NOOP = _IO('r', 12), //操作完成 BR_SPAWN_LOOPER = _IO('r', 13), //申请更多线程 BR_FINISHED = _IO('r', 14), //未实现 BR_DEAD_BINDER = _IOR('r', 15, void *), //发送binder实体死亡通知 BR_CLEAR_DEATH_NOTIFICATION_DONE = _IOR('r', 16, void *), //清除binder实体死亡通知完成 BR_FAILED_REPLY = _IO('r', 17), //回复失败 };
可能存在错误理解,在分析完binder驱动后修正
相关文章推荐
- Android Binder机制の设计与实现4(Binder 协议)
- Android深入浅出之Binder机制
- Android深入浅出之Binder机制
- Android Binder机制(超级详尽)
- Android Binder机制----实现自定义的系统服务
- 浅谈Service Manager成为Android进程间通信(IPC)机制Binder守护进程之路
- Android中Binder机制的实现(二)
- android Binder机制研究一
- Android进程间通信(IPC)机制Binder简要介绍和学习计划
- 浅谈Service Manager成为Android进程间通信(IPC)机制Binder守护进程之路
- Android进程间通信(IPC)机制Binder简要介绍和学习计划
- Android进程间通信(IPC)机制Binder简要介绍和学习计划
- [Android] 理论了解Binder机制原理和底层实现
- Android进程间通信(IPC)机制Binder简要介绍和学习计划
- Android深入浅出之Binder机制
- Android深入浅出之Binder机制
- Android深入浅出之Binder机制
- Android Binder机制浅析
- Android系统Binder机制之二(服务代理对象 上篇)
- Android Binder机制完全解析