lwip_periodic_handle函数内只调用函数sys_check_timeouts可以吗
时间: 2023-08-04 11:05:10 浏览: 148
可以的,lwip_periodic_handle函数是lwIP协议栈中的一个核心函数,用于处理各种定时器事件和轮询网络接口。在该函数中,调用sys_check_timeouts函数是必要的,因为它负责检查已经超时的定时器事件并采取相应的措施。但是,除了调用sys_check_timeouts函数外,还应该处理其他的事件,例如处理网络接口的输入和输出数据。因此,在lwip_periodic_handle函数中只调用sys_check_timeouts函数是不够的,还需要处理其他事件。
相关问题
lwip_periodic_handle源码
lwip_periodic_handle函数的源码如下:
```c
void
lwip_periodic_handle(struct netif *netif)
{
struct lwip_api_msg msg;
LWIP_ASSERT("netif != NULL", netif != NULL);
/* 如果网络接口没有被启用,则直接返回 */
if (!netif_is_up(netif)) {
return;
}
/* 如果需要DHCP,则调用dhcp_coarse_tmr()函数 */
if (netif->dhcp != NULL) {
dhcp_coarse_tmr();
dhcp_fine_tmr();
}
/* 如果需要AUTOIP,则调用autoip_tmr()函数 */
if (netif->autoip != NULL) {
autoip_tmr();
}
/* 如果需要LLMNR,则调用llmnr_tmr()函数 */
#if LWIP_LLMNR
if (netif->llmnr != NULL) {
llmnr_tmr();
}
#endif /* LWIP_LLMNR */
/* 如果需要MDNS,则调用mdns_tmr()函数 */
#if LWIP_MDNS_RESPONDER
if (netif->mdns != NULL) {
mdns_tmr();
}
#endif /* LWIP_MDNS_RESPONDER */
/* 处理DNS */
dns_tmr();
/* 处理TCP */
tcp_tmr();
/* 处理ARP */
etharp_tmr();
/* 如果使用了IGMP,则调用igmp_tmr()函数 */
#if LWIP_IGMP
igmp_tmr();
#endif /* LWIP_IGMP */
/* 如果使用了SNMP,则调用snmp_tmr()函数 */
#if LWIP_SNMP
snmp_tmr();
#endif /* LWIP_SNMP */
/* 如果使用了HTTPD,则调用httpd_tmr()函数 */
#if LWIP_HTTPD
httpd_tmr();
#endif /* LWIP_HTTPD */
/* 处理API消息 */
while (lwip_recv_msg(&msg) == ERR_OK) {
lwip_netconn_do_writes(&msg);
if (msg.conn != NULL) {
netconn_delete(msg.conn);
}
}
}
```
该函数主要是对lwIP网络栈中的各个定时事件进行处理,包括DHCP、AUTOIP、LLMNR、MDNS、DNS、TCP、ARP、IGMP、SNMP、HTTPD等。同时,该函数还会处理从API接口收到的消息。需要注意的是,该函数中的处理逻辑和具体实现可能会因为版本不同而有所不同。
lwip_periodic_handle需要用户修改吗
lwip_periodic_handle是lwIP网络栈中的一个函数,用于处理定时事件。这个函数的实现已经在lwIP库中定义好了,一般情况下不需要用户进行修改。如果用户需要对网络栈进行定制化的修改,可以通过定义自己的回调函数并在该函数中调用lwip_periodic_handle来实现。但是需要注意的是,这样的修改需要谨慎处理,避免影响网络栈的正常运行。
阅读全文