[Android]adb学习笔记(二)
2014-04-19 12:37
330 查看
2.通过fdevent_install()和fdevent_set()函数,现在要监听的fd已经通过epoll_ctrl()函数可以监听,
下一步就是调用fdevent_loop()函数调用epoll_wait()函数开始监听并调用相应的回调函数执行。
下一步就是调用fdevent_loop()函数调用epoll_wait()函数开始监听并调用相应的回调函数执行。
static fdevent list_pending = { .next = &list_pending, .prev = &list_pending, }; void fdevent_loop() { fdevent *fde; for(;;) { fdevent_process(); while((fde = fdevent_plist_dequeue())) { fdevent_call_fdfunc(fde); } } } static void fdevent_process() { struct epoll_event events[256]; fdevent *fde; int i, n; n = epoll_wait(epoll_fd, events, 256, -1); if(n < 0) { if(errno == EINTR) return; } for(i = 0; i < n; i++) { struct epoll_event *ev = events + i; fde = ev->data.ptr; if(ev->events & EPOLLIN) { fde->events |= FDE_READ; } if(ev->events & EPOLLOUT) { fde->events |= FDE_WRITE; } if(ev->events & (EPOLLERR | EPOLLHUP)) { fde->events |= FDE_ERROR; } if(fde->events) { if(fde->state & FDE_PENDING) continue; fde->state |= FDE_PENDING; fdevent_plist_enqueue(fde); } } } static void fdevent_plist_enqueue(fdevent *node) { fdevent *list = &list_pending; node->next = list; node->prev = list->prev; node->prev->next = node; list->prev = node; } static void fdevent_call_fdfunc(fdevent* fde) { unsigned events = fde->events; fde->events = 0; if(!(fde->state & FDE_PENDING)) return; fde->state &= (~FDE_PENDING); dump_fde(fde, "callback"); fde->func(fde->fd, events, fde->arg); }
相关文章推荐
- Android数据库LitePal框架学习笔记(1)---数据库的adb操作以及LitePal使用入门
- Android adb命令学习笔记(一)——adb介绍以及关于传输文件等相关基本命令
- android菜鸟学习笔记2----关于adb
- Android 学习笔记---使用shell命令来关闭和开启ADB
- 【Android】学习笔记(10)——adb使用方法
- [Android]adb学习笔记(三)
- [Android]adb学习笔记(一)
- Android下SQLite数据库学习笔记4——SQLite3工具的使用&用Genymotion模拟器时,在命令行上使用不了adb命令
- Android开发学习笔记(9):ADB命令大全
- Android 学习笔记 第五季 7 在 Intellij 和 AndroidStudio 中查看源码
- Android开发秘籍学习笔记(七)
- Android UI学习笔记 之 colors.xml
- C\C++ 程序员从零开始学习Android - 个人学习笔记(十) - java基础 - 多线程(待续)
- Android(java)学习笔记141:SQLiteDatabase的query方法参数分析
- [Android新手学习笔记32]-Broadcast-强制下线
- (转)Android动画学习笔记-Android Animation
- Android学习记录——常用ADB操作指令
- Android画图学习笔记一 类的简介
- Android高级应用开发(深入篇) stage3(下)- 高级商用界面开发 学习笔记
- [android](学习笔记7)为应用程序添加选项菜单