设为首页 加入收藏

TOP

Android 2.3 ADB源码分析(二)
2014-11-24 14:36:54 来源: 作者: 【 】 浏览:5
Tags:Android 2.3 ADB 源码 分析

...
}


异步如何触发的呢?
register_transport
-->transport_write_action(transport_registration_send, &m)


remove_transport
-->transport_write_action(transport_registration_send, &m)



此时会将事件写入socket pair的写入端,而接收端:


void fdevent_loop()
{
...

for(;;) {

while((fde = fdevent_plist_dequeue())) {
unsigned events = fde->events;
fde->events = 0;
fde->state &= (~FDE_PENDING);
dump_fde(fde, "callback");

//这个回调函数是在:fdevent_install 函数中注册的:fde->func = func;
fde->func(fde->fd, events, fde->arg);
}
}
}


然后利用transport_read_action读取异步事情,那么数据处理在哪里呢?


transport_registration_func
-->
/* don't create transport threads for inaccessible devices */
if (t->connection_state != CS_NOPERM) {


if(adb_thread_create(&input_thread_ptr, input_thread, t)){
fatal_errno("cannot create input thread");
}



if(adb_thread_create(&output_thread_ptr, output_thread, t)){
fatal_errno("cannot create output thread");
}
}

在这里会创建两个线程 output thread和 input thread用于做异步 IO,


首页 上一页 1 2 下一页 尾页 2/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇浅谈Android开发的技术层次 下一篇Android 图形系统加速学习系列

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: