有了sys_check_timeouts(),还需要调用tcpip_timeout吗
时间: 2024-01-16 18:02:23 浏览: 154
在lwIP协议栈中,`sys_check_timeouts()`函数是用来处理定时器超时事件的,而`tcpip_timeout()`函数则是用来在tcpip线程中处理定时器事件的。两者的作用不同,因此在使用lwIP协议栈时,通常需要同时使用这两个函数。
具体来说,`sys_check_timeouts()`函数主要用来处理一些与协议栈核心相关的定时器,例如TCP重传定时器、ARP超时定时器等,而`tcpip_timeout()`函数则主要用来处理一些与应用相关的定时器,例如socket超时定时器、定时发送数据等。
因此,如果你需要使用lwIP协议栈中的定时器功能,那么通常需要同时使用`sys_check_timeouts()`函数和`tcpip_timeout()`函数来处理不同类型的定时器事件。
相关问题
sys_check_timeouts未调用tcpip_timeout(0);
在lwIP协议栈中,`sys_check_timeouts()`函数是被用来处理定时器超时事件的函数,但是它并没有直接调用`tcpip_timeout(0)`函数。这是因为`tcpip_timeout(0)`函数是用来触发tcpip线程处理定时器事件的函数,而`sys_check_timeouts()`函数则是在lwIP协议栈的核心部分被调用的,而不是在tcpip线程中被调用的。这意味着,当`sys_check_timeouts()`函数被调用时,所有的定时器事件都已经在定时器队列中排好序了,`next_timeout`指针指向最近一个超时的定时器事件,所以在该函数内部,直接处理超时事件即可,不需要再次触发tcpip线程。
sys_check_timeouts()函数和tcpip_timeout()需要在何种条件下调用
在使用lwIP协议栈时,`sys_check_timeouts()`函数和`tcpip_timeout()`函数通常需要在以下两种情况下调用:
1. 在应用程序中,如果需要使用定时器功能,那么需要调用`tcpip_timeout()`函数来注册定时器事件,并在事件发生时触发相应的回调函数。这通常需要在应用程序初始化时进行一次注册即可。
2. 在lwIP协议栈中,如果需要处理定时器超时事件,那么需要在合适的时机调用`sys_check_timeouts()`函数来处理已经超时的定时器。通常情况下,`sys_check_timeouts()`函数应该在lwIP协议栈的核心代码中被调用,例如在数据包处理函数中、定时器超时函数中等。
总之,`sys_check_timeouts()`函数和`tcpip_timeout()`函数是lwIP协议栈中非常重要的定时器处理函数,它们通常需要在不同的上下文中被调用,以确保定时器能够正确地被触发和处理。
阅读全文