多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
LwIP通过一个sys\_timeo类型的数据结构管理与超时链表相关的所有超时事件。LwIP使用这个结构体记录下内核中所有被注册的超时事件,这些结构体会以链表的形式一个个连接在超时链表中,而内核中只有一条超时链表,那么怎么对超时链表进行管理呢?LwIP定义了一个sys\_timeo类型的指针next\_timeout,并且将next\_timeout指向当前内核中链表头部,所有被注册的超时事件都会按照被处理的先后顺序排列在超时链表上。sys\_timeo结构体与超时链表源码具体见代码清单 9‑1。 ``` 1 typedef void (* sys_timeout_handler)(void *arg); 2 3 struct sys_timeo 4 { 5 struct sys_timeo *next; (1) 6 u32_t time; (2) 7 sys_timeout_handler h; (3) 8 void *arg; (4) 9 }; 10 11 /** The one and only timeout list */ 12 static struct sys_timeo *next_timeout; (5) ``` (1):指向下一个超时事件的指针,用于超时链表的连接。 (2):当前超时事件的等待时间。 (3):指向超时的回调函数,该事件超时后就执行对应的回调函数。 (4):向回调函数传入参数。 (5):指向超时链表第一个超时事件。