共 16 篇文章
显示摘要每页显示  条
Android之binder驱动分析[1]理解binder驱动最好有一个上层的概念,也就是对binder怎么用的有所了解。BINDER_WRITE_READ:Handle和ptr之间的翻译关系正是binder驱动需要维护的。此部分区分要处理的是binder对象传递(BINDER_TYPE_BINDER/BINDER_TYPE_WEAK_BINDER),引用(BINDER_TYPE_HANDLE/BINDER_TYPE_WEAK_HANDLE),还是文件(BINDER_TY...
Android-IPC-Binder(4)Service Manager Handle Add Service。// platform/frameworks/base/cmds/servicemanager/binder.c int binder_parse(struct binder_state *bs, struct binder_io *bio, uint32_t *ptr, uint32_t size, binder_handler func) { ...... case BR_TRANSACTION: { struct binder_txn *txn ...
create_proc_read_entry(strbuf, S_IRUGO, binder_proc_dir_entry_proc, binder_read_proc_proc, proc);} if (binder_debug_mask & BINDER_DEBUG_READ_WRITE) printk(KERN_INFO "binder: %d:%d write %ld at %08lx, read %ld at %08lx/n", proc->pid, thread->pid, bwr.write_size, bwr.write_bu...
Android-IPC-Binder(2)Generate AudioFlinger Service。if (binder !} else { obj.type = BINDER_TYPE_BINDER;} } else { obj.type = BINDER_TYPE_BINDER;view plaincopy to clipboard// frameworks/base/libs/binder/BpBinder.cpp status_t BpBinder::transact( uint32_t code, const Parcel& data, Parcel* repl...
Android-IPC-Binder(1)// frameworks/base/cmds/servicemanager/binder.c void binder_loop(struct binder_state *bs, binder_handler func) { int res;BINDER_SERVICE_MANAGER是service_manager注册的handle。// frameworks/base/include/binder/IInterface.h template<typename INTERFACE> inline sp<INTERFACE> inte...
binder驱动-交互时的传输实现(四)其实我们可以想一下,这个binder_thread_read()函数执行完的时候,异步任务还没开始执行,驱动还会将binder_transaction_data结构体传回上层程序,上层程序才真正开始执行异步任务,不过通常上层应用程序在执行完异步任务(其实不只是异步任务,应该是所有类型的任务)被执行完,都应该发送BC_FREE_BUFFER这个命...
接着如果运气好的话,才有可能将binder_transaction移动到目标进程的全局任务队列binder_node.todo中,这时binder驱动就会给他找一个空闲线程来处理这个请求数据包。该函数调用传递的参数有:当前task所在的进程对应的binder_proc和binder_thread结构体指针,用户空间的read_buffer地址,想读取数据的大小,已经打开binder节点的时候是否是非阻...
某个进程在调用了binder_open()之后将会在驱动中各有一个binder_proc结构体与之对应,而每一个线程(包括主进程)却不一定在驱动中有一个binder_thread结构体与之对应(除非有调用ioctl进行过读写),如果有binder_thread存在,那么这些binder_thread结构体均以域rb_node挂在对应进程的binder_proc.threads这颗红黑树上。fp->type = BINDER_TYPE...
proc/state、proc/stats、proc/transactions、proc/transaction_log、proc/failed_transaction_log。这些接口文件对应的proc读取函数分别是:binder_read_proc_state()、binder_read_proc_stats()、binder_read_proc_transactions()、binder_read_proc_transaction_log()、binder_read_proc_transaction_log()。/* 以proc->pid作为名字在pro...
a. 如果没有搜索到,就说明这是第一次发送需要创建对应的内核binder节点,也就是要构建内核中的binder_node结构体,当然同时还需要构建binder_proc结构体来记录server进程的信息填充到binder_node.proc中,也要把flat_binder_object.binder值赋值给binder_node.ptr做备份,最后就是设置一些flag和保存cookie了,最后通过binder_node.rb_node将这...
帮助 | 留言交流 | 联系我们 | 服务条款 | 下载网文摘手 | 下载手机客户端
北京六智信息技术股份有限公司 Copyright© 2005-2024 360doc.com , All Rights Reserved
京ICP证090625号 京ICP备05038915号 京网文[2016]6433-853号 京公网安备11010502030377号
返回
顶部