【android】binder机制 binder协议
来源:互联网 发布:重复照片整理软件 编辑:程序博客网 时间:2024/05/16 08:37
(关于_IOWR,_IOW,_IOR,_IO请参考linux命令码(_IO宏) )
一.设备文件/dev/binder ioctl命令
#define BINDER_WRITE_READ _IOWR('b', 1, struct binder_write_read)//读写命令#defineBINDER_SET_IDLE_TIMEOUT_IOW('b', 3, int64_t)//未实现#defineBINDER_SET_MAX_THREADS_IOW('b', 5, size_t)//设置最大线程数#defineBINDER_SET_IDLE_PRIORITY_IOW('b', 6, int)//未实现#defineBINDER_SET_CONTEXT_MGR_IOW('b', 7, int)//设置binder上下文管理者#defineBINDER_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_bufferBC_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机制 binder协议
- Android binder -- Binder机制编程
- android binder机制---Binder驱动
- android的binder机制
- android binder机制
- android binder机制
- android binder机制实现
- android Binder机制深入浅出
- Android Binder机制
- Android Binder机制(使用)
- android binder机制
- Android Binder机制分析
- 【android】binder机制-servicemanager
- 【android】binder机制-service
- android binder机制
- Android Binder机制
- android下Binder机制
- Android Binder机制
- JNI学习笔记(二)JNI中的java语言与本地C/C++语言之间的映射(附例子)
- 详解ASP.NET MVC 3新的Layout布局系统
- 国外对架构方面“拍脑袋”的新名词“架构的顺势疗法”
- 经典论文翻译导读之《Dremel: Interactive Analysis of WebScale Datasets》
- java匿名内部类
- 【android】binder机制 binder协议
- 黑马程序员-面向对象
- 《Java TCP/IP Socket编程》读书笔记(16)
- Maya Mel 窗口显示
- web前端的基本知识
- linux 内核定时器解析
- linux modules相关工具和命令
- oracle数据库教程集中营
- 各种流行的编程风格