lwIP超时时限
许多协议要求在一个特定时间周期内要发生特定的事件。比如,在一个特定的TCP时间窗口内要接收到一个应答,否则该数据包将被重传。lwIP可以利用邮箱和信号量来简单实现定时器的相关要求。尽管完全理解超时的实现(在sys_arch.c文件实现)是不必要的,但是它会帮助你了解哪一个你提供的函数将会起到作用。
解释:超时链接列表是一个关于struct sys_timeo’s的链接列表。这个结构体保存着还剩多少毫秒剩下直到它(超时)被激活,还有一个指向函数的指针和它的参数,该函数被调用当超时发生。当一个线程(程序本身)因一个lwIP信号量(通过sys_sem_wait)或者邮箱(通过sys_mailbox_fetch)阻塞时,它将会阻塞一段时间直到达到超时的时限,在阻塞时间内服务(当收到一个信号量或邮箱)可以被执行。如果一个信号量或者邮箱超时,那么处理超时的函数将被调用。另外,所有的超时时限都将会与阻塞的时间进行相减(sys_sem_wait函数将精确报告该调用阻塞了多长时间)。超时链接链表包含在结构体sys_timeouts里。你要实现如下函数:
struct sys_timeouts *sys_arch_timeouts(void):这个函数返回一个指向超时链接的链表。