博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
OpenWrt:libubox之uloop
阅读量:7098 次
发布时间:2019-06-28

本文共 1730 字,大约阅读时间需要 5 分钟。

数据结构:

struct uloop_fd {    uloop_fd_handler cb;       int fd;                     bool eof;                           bool error;                         bool registered;               uint8_t flags;                      };struct uloop_timeout {    struct list_head list;                  bool pending;                   uloop_timeout_handler cb;     struct timeval time;    };struct uloop_process {    struct list_head list;                  bool pending;                       uloop_process_handler cb;           pid_t pid;                    };

事件回调函数:

typedef void (*uloop_fd_handler)(struct uloop_fd *u, unsigned int events) // 描述符typedef void (*uloop_timeout_handler)(struct uloop_timeout *t) // 定时器typedef void (*uloop_process_handler)(struct uloop_process *c, int ret)  // 进程

事件标志:

#define ULOOP_READ          (1 << 0)#define ULOOP_WRITE         (1 << 1)#define ULOOP_EDGE_TRIGGER  (1 << 2)#define ULOOP_BLOCKING      (1 << 3)#define ULOOP_EVENT_MASK    (ULOOP_READ | ULOOP_WRITE)

主框架:

/** * 初始化事件循环 */int uloop_init(void)/** * 事件循环主处理入口 */void uloop_run(void)/** * 销毁事件循环 */void uloop_done(void)

描述符事件:

/** * 注册一个新描述符到事件处理循环 */int uloop_fd_add(struct uloop_fd *sock, unsigned int flags)/**  * 从事件处理循环中销毁指定描述符 */int uloop_fd_delete(struct uloop_fd *sock)

定时器事件:

/** * 注册一个新定时器 */int uloop_timeout_add(struct uloop_timeout *timeout)/** * 设置定时器超时时间(毫秒),并添加 */int uloop_timeout_set(struct uloop_timeout *timeout, int msecs)/** * 销毁指定定时器 */int uloop_timeout_cancel(struct uloop_timeout *timeout)/** * 获取定时器还剩多长时间超时 */int uloop_timeout_remaining(struct uloop_timeout *timeout)

进程事件:

/** * 注册新进程到事件处理循环 */int uloop_process_add(struct uloop_process *p)/** * 从事件处理循环中销毁指定进程 */int uloop_process_delete(struct uloop_process *p)

参考文章

转载地址:http://tbeql.baihongyu.com/

你可能感兴趣的文章
emmet教程
查看>>
20189317 《网络攻防技术》 第五周作业
查看>>
【HDOJ】1197 Specialized Four-Digit Numbers
查看>>
【HDOJ】前三百留念
查看>>
【HDOJ】2451 Simple Addition Expression
查看>>
the art of seo(chapter eight)
查看>>
接口、继承和泛型方法的使用
查看>>
C#入门篇6-10:字符串操作 DateTime操作
查看>>
Shared_ptr 相互引用问题
查看>>
Nginx 入门指南
查看>>
冒泡排序与选择排序
查看>>
[多人合作的项目] - 记项目开发的多人化
查看>>
CSS3教程:pointer-events属性值详解
查看>>
[Android Pro] 告别编译运行 ---- Android Studio 2.0 Preview发布Instant Run功能
查看>>
[Web 前端] webstorm 快速搭建react项目
查看>>
阿里巴巴实习 面试题
查看>>
洛谷 P1443 马的遍历
查看>>
Asp.net MVC3 中,动态添加filter
查看>>
人民币主动贬值 你的理财方式主动调整了吗?加上外币兑换的费用,也远不如投资人民币理财产品带来的收益高...
查看>>
m6-第11周作业
查看>>