Dear Simon and Ajay,
Thanks you so much for your attention in this matter. I appreciate your suggestions and I evaluate them carefully. I hope to interpret correctly the three your solutions: - LOCK_TCPIP_CORE / UNLOCK_TCPIP_CORE. They allow to access in exclusive way to TCIPIP mechanism. However, I don’t want interfere with the regular mechanisms of TCIPIP thread and of operating system; - tcpip_callback. It allows to call a specific function inside TCPIP thread. However, tcpip_callback doesn’t expect a wait until the end of the function executed in TCPIP thread.- tcpip_try_callback. As for the above function, tcpip_try_callback also allows to call a specific function inside the TCPIP thread. However, tcpip_try_callback doesn’t block when the request can’t be posted in the tcpip_mbox. For these reasons I choose to use the tcpip_api_call function. In this way the caller task waits for the TCPIP operation to be completed and the modifications to the existing project are marginal. I follow the netifapi_netif_set_addr function as example. So, I introduce: - dnsapi_dns_setserver. Function called from non-TCPIP threads. It passes to TCPIP thread the dnsapi_do_dns_setserver function through the tcpip_api_call function;- dnsapi_do_dns_setserver. Function called inside the TCPIP thread. It calls the dns_setserver function. So the dns_setserver is executed in thread-safe way;- dns_server_api_msg. Structure used to modelized the message passed to TCPIP thread through tcpip_api_call function. This solution works fine. At this point I would like to know your position about the use of the tcpip_api_call function instead of your suggestions. Is it an equally acceptable alternative from your point of view?. Thanks in advance. Regards You can write a simple wrapper function for DNS setup and use tcpip_callback to call it from TCPIP thread context. There is also tcpip_try_callback. Regards, Ajay Bhargav > Dear all, > > I would like to ask some questions about the thread-safe functions. > > According the http://www.nongnu.org/lwip/2_0_x/pitfalls.html page, in > the OS mode, all the callback-style APIs function must only be called > from the TCPIP thread. > In the OS mode, the functions belongs to NETIF, DHCP, DNS, … modules > require corresponding thread-safe functions to be used from threads > different from TCPIP thread. > For example instead of calling directly the /netif_set_up/ function it’s > necessary use the /netifapi_netif_set_up/ function, or instead of > calling directly the /dhcp_start/ function it’s necessary use the > /netifapi_dhcp_start/ function. > > I am looking for the thread-safe function corresponding to the > /dns_setserver /function. I am using LwIP 2.1.2, but I don’t find it. I don't think such a function exists. > > At this point I would know if there is a thread-safe function > corresponding to the /dns_setserver/ or if I should build a similar > function myself. In this last case, which function could I take as a model?. The simple solution would be to enable LWIP_TCPIP_CORE_LOCKING and surround your call with LOCK_TCPIP_CORE()/UNLOCK_TCPIP_CORE(). Regards, Simon > > Thanks in advance for your attention and for your suggestions. > Regards _______________________________________________ lwip-users mailing list lwip-users@nongnu.org https://lists.nongnu.org/mailman/listinfo/lwip-users
_______________________________________________ lwip-users mailing list lwip-users@nongnu.org https://lists.nongnu.org/mailman/listinfo/lwip-users