Appearance
超时定时器
timeout.c
为每个与外界网络连接的任务都设定了timeout属性,即等待超时时间,例如TCP建立连接超时、ARP缓存表项的时间管理等,都需要超时操作来处理
事件是按照触发的事件进行排序的
在实际实现的时候会使用
const struct lwip_cyclic_timer lwip_cyclic_timers[];
进行管理默认的事件, 在函数sys_timeouts_init里面进行注册实际注册的时候会通过当前的时间计算超时的时间, 申请一个sys_timeo结构体进行记录信息, 之后按照超时的时间把这一个结构体插入链表
使用链表next_timeout记录所有需要处理的超时事件
c
void sys_timeout(u32_t msecs, sys_timeout_handler handler, void *arg)
注册一个事件
c
void sys_untimeout(sys_timeout_handler handler, void *arg)
删除一个事件
- 查询
裸机的时候需要定时调用sys_check_timeouts这一个函数
操作系统的时候会在tcpip的线程里面调用函数tcpip_timeouts_mbox_fetch