mirror of
https://github.com/espressif/esp-idf.git
synced 2024-10-05 20:47:46 -04:00
fix(lwip): Cleanup freertos port to use more readable checks
It also removes incorrect comment that's not valid any more (leftover from 6933c103e5
)
It also removes ESP_THREAD_SAFE macro and sys_mbox_set_owner() which were not used
It also fixes CID 460613: Uninitialized pointer read in api_lib.c, netconn_gethostbyname_addrtype
Updated lwip submodule: git log --oneline 4297782b..aa4f6e78
* api_msg: Fix unused local variable if LWIP_NETCONN_SEM_PER_THREAD=1 (espressif/esp-lwip@aa4f6e78)
This commit is contained in:
parent
2e2a621dca
commit
70645836fc
@ -1 +1 @@
|
|||||||
Subproject commit 4297782bf9e614be1bb8605f30d46af8697fab17
|
Subproject commit aa4f6e780f374af5e10730960fe0262a916166d1
|
@ -3,7 +3,7 @@
|
|||||||
*
|
*
|
||||||
* SPDX-License-Identifier: BSD-3-Clause
|
* SPDX-License-Identifier: BSD-3-Clause
|
||||||
*
|
*
|
||||||
* SPDX-FileContributor: 2018-2022 Espressif Systems (Shanghai) CO LTD
|
* SPDX-FileContributor: 2018-2024 Espressif Systems (Shanghai) CO LTD
|
||||||
*/
|
*/
|
||||||
#ifndef __SYS_ARCH_H__
|
#ifndef __SYS_ARCH_H__
|
||||||
#define __SYS_ARCH_H__
|
#define __SYS_ARCH_H__
|
||||||
@ -24,7 +24,6 @@ typedef TaskHandle_t sys_thread_t;
|
|||||||
|
|
||||||
typedef struct sys_mbox_s {
|
typedef struct sys_mbox_s {
|
||||||
QueueHandle_t os_mbox;
|
QueueHandle_t os_mbox;
|
||||||
void *owner;
|
|
||||||
}* sys_mbox_t;
|
}* sys_mbox_t;
|
||||||
|
|
||||||
/** This is returned by _fromisr() sys functions to tell the outermost function
|
/** This is returned by _fromisr() sys functions to tell the outermost function
|
||||||
@ -38,33 +37,17 @@ void sys_delay_ms(uint32_t ms);
|
|||||||
#define LWIP_COMPAT_MUTEX 0
|
#define LWIP_COMPAT_MUTEX 0
|
||||||
|
|
||||||
#if !LWIP_COMPAT_MUTEX
|
#if !LWIP_COMPAT_MUTEX
|
||||||
#define sys_mutex_valid( x ) ( ( ( *x ) == NULL) ? pdFALSE : pdTRUE )
|
#define sys_mutex_valid_val(mutex) ((mutex) != NULL)
|
||||||
#define sys_mutex_set_invalid( x ) ( ( *x ) = NULL )
|
#define sys_mutex_valid(mutex) (((mutex) != NULL) && sys_mutex_valid_val(*(mutex)))
|
||||||
|
#define sys_mutex_set_invalid(mutex) ((*(mutex)) = NULL)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define sys_mbox_valid( x ) ( ( ( *x ) == NULL) ? pdFALSE : pdTRUE )
|
#define sys_mbox_valid(mbox) (*(mbox) != NULL)
|
||||||
|
#define sys_mbox_set_invalid(mbox) (*(mbox) = NULL)
|
||||||
|
|
||||||
/* Define the sys_mbox_set_invalid() to empty to support lock-free mbox in ESP LWIP.
|
#define sys_sem_valid_val(sema) ((sema) != NULL)
|
||||||
*
|
#define sys_sem_valid(sema) (((sema) != NULL) && sys_sem_valid_val(*(sema)))
|
||||||
* The basic idea about the lock-free mbox is that the mbox should always be valid unless
|
#define sys_sem_set_invalid(sema) ((*(sema)) = NULL)
|
||||||
* no socket APIs are using the socket and the socket is closed. ESP LWIP achieves this by
|
|
||||||
* following two changes to official LWIP:
|
|
||||||
* 1. Postpone the deallocation of mbox to netconn_free(), in other words, free the mbox when
|
|
||||||
* no one is using the socket.
|
|
||||||
* 2. Define the sys_mbox_set_invalid() to empty if the mbox is not actually freed.
|
|
||||||
|
|
||||||
* The second change is necessary. Consider a common scenario: the application task calls
|
|
||||||
* recv() to receive packets from the socket, the sys_mbox_valid() returns true. Because there
|
|
||||||
* is no lock for the mbox, the LWIP CORE can call sys_mbox_set_invalid() to set the mbox at
|
|
||||||
* anytime and the thread-safe issue may happen.
|
|
||||||
*
|
|
||||||
* However, if the sys_mbox_set_invalid() is not called after sys_mbox_free(), e.g. in netconn_alloc(),
|
|
||||||
* we need to initialize the mbox to invalid explicitly since sys_mbox_set_invalid() now is empty.
|
|
||||||
*/
|
|
||||||
#define sys_mbox_set_invalid( x ) *x = NULL
|
|
||||||
|
|
||||||
#define sys_sem_valid( x ) ( ( (x) == NULL ) ? pdFALSE : ( ( *x ) == NULL ? pdFALSE : pdTRUE ) )
|
|
||||||
#define sys_sem_set_invalid( x ) ( ( *x ) = NULL )
|
|
||||||
|
|
||||||
void sys_delay_ms(uint32_t ms);
|
void sys_delay_ms(uint32_t ms);
|
||||||
sys_sem_t* sys_thread_sem_init(void);
|
sys_sem_t* sys_thread_sem_init(void);
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
*
|
*
|
||||||
* SPDX-License-Identifier: BSD-3-Clause
|
* SPDX-License-Identifier: BSD-3-Clause
|
||||||
*
|
*
|
||||||
* SPDX-FileContributor: 2018-2022 Espressif Systems (Shanghai) CO LTD
|
* SPDX-FileContributor: 2018-2024 Espressif Systems (Shanghai) CO LTD
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/* lwIP includes. */
|
/* lwIP includes. */
|
||||||
@ -219,10 +219,6 @@ sys_mbox_new(sys_mbox_t *mbox, int size)
|
|||||||
return ERR_MEM;
|
return ERR_MEM;
|
||||||
}
|
}
|
||||||
|
|
||||||
#if ESP_THREAD_SAFE
|
|
||||||
(*mbox)->owner = NULL;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
LWIP_DEBUGF(ESP_THREAD_SAFE_DEBUG, ("new *mbox ok mbox=%p os_mbox=%p\n", *mbox, (*mbox)->os_mbox));
|
LWIP_DEBUGF(ESP_THREAD_SAFE_DEBUG, ("new *mbox ok mbox=%p os_mbox=%p\n", *mbox, (*mbox)->os_mbox));
|
||||||
return ERR_OK;
|
return ERR_OK;
|
||||||
}
|
}
|
||||||
@ -352,15 +348,6 @@ sys_arch_mbox_tryfetch(sys_mbox_t *mbox, void **msg)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
|
||||||
sys_mbox_set_owner(sys_mbox_t *mbox, void* owner)
|
|
||||||
{
|
|
||||||
if (mbox && *mbox) {
|
|
||||||
(*mbox)->owner = owner;
|
|
||||||
LWIP_DEBUGF(ESP_THREAD_SAFE_DEBUG, ("set mbox=%p owner=%p", *mbox, owner));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Delete a mailbox
|
* @brief Delete a mailbox
|
||||||
*
|
*
|
||||||
@ -444,7 +431,7 @@ sys_jiffies(void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Get current time, in miliseconds
|
* @brief Get current time, in milliseconds
|
||||||
*
|
*
|
||||||
* @return current time
|
* @return current time
|
||||||
*/
|
*/
|
||||||
|
@ -1592,7 +1592,7 @@ static inline uint32_t timeout_from_offered(uint32_t lease, uint32_t min)
|
|||||||
#define ESP_LWIP 1
|
#define ESP_LWIP 1
|
||||||
#define ESP_LWIP_ARP 1
|
#define ESP_LWIP_ARP 1
|
||||||
#define ESP_PER_SOC_TCP_WND 0
|
#define ESP_PER_SOC_TCP_WND 0
|
||||||
#define ESP_THREAD_SAFE 1
|
#define ESP_THREAD_SAFE 1 /* Not used (to be removed in v6.x) */
|
||||||
#define ESP_THREAD_SAFE_DEBUG LWIP_DBG_OFF
|
#define ESP_THREAD_SAFE_DEBUG LWIP_DBG_OFF
|
||||||
#define ESP_DHCP 1
|
#define ESP_DHCP 1
|
||||||
#define ESP_DNS 1
|
#define ESP_DNS 1
|
||||||
@ -1630,12 +1630,10 @@ static inline uint32_t timeout_from_offered(uint32_t lease, uint32_t min)
|
|||||||
|
|
||||||
|
|
||||||
#if LWIP_NETCONN_SEM_PER_THREAD
|
#if LWIP_NETCONN_SEM_PER_THREAD
|
||||||
#if ESP_THREAD_SAFE
|
|
||||||
#define LWIP_NETCONN_THREAD_SEM_GET() sys_thread_sem_get()
|
#define LWIP_NETCONN_THREAD_SEM_GET() sys_thread_sem_get()
|
||||||
#define LWIP_NETCONN_THREAD_SEM_ALLOC() sys_thread_sem_init()
|
#define LWIP_NETCONN_THREAD_SEM_ALLOC() sys_thread_sem_init()
|
||||||
#define LWIP_NETCONN_THREAD_SEM_FREE() sys_thread_sem_deinit()
|
#define LWIP_NETCONN_THREAD_SEM_FREE() sys_thread_sem_deinit()
|
||||||
#endif
|
#endif
|
||||||
#endif
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* If CONFIG_ALLOC_MEMORY_IN_SPIRAM_FIRST is enabled, Try to
|
* If CONFIG_ALLOC_MEMORY_IN_SPIRAM_FIRST is enabled, Try to
|
||||||
|
Loading…
Reference in New Issue
Block a user