Merge branch 'wifi' of ssh://gitlab.espressif.cn:27227/idf/esp-idf into wifi
This commit is contained in:
commit
3ba06efd7d
|
@ -206,10 +206,6 @@ typedef struct tskTaskControlBlock
|
||||||
volatile eNotifyValue eNotifyState;
|
volatile eNotifyValue eNotifyState;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if (configESP32_PER_TASK_DATA == 1)
|
|
||||||
void *data;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
} tskTCB;
|
} tskTCB;
|
||||||
|
|
||||||
/* The old tskTCB name is maintained above then typedefed to the new TCB_t name
|
/* The old tskTCB name is maintained above then typedefed to the new TCB_t name
|
||||||
|
@ -611,9 +607,6 @@ BaseType_t i;
|
||||||
|
|
||||||
if( pxNewTCB != NULL )
|
if( pxNewTCB != NULL )
|
||||||
{
|
{
|
||||||
#if (configESP32_PER_TASK_DATA == 1)
|
|
||||||
pxNewTCB->data = NULL;
|
|
||||||
#endif
|
|
||||||
#if( portUSING_MPU_WRAPPERS == 1 )
|
#if( portUSING_MPU_WRAPPERS == 1 )
|
||||||
/* Should the task be created in privileged mode? */
|
/* Should the task be created in privileged mode? */
|
||||||
BaseType_t xRunPrivileged;
|
BaseType_t xRunPrivileged;
|
||||||
|
@ -799,11 +792,6 @@ BaseType_t i;
|
||||||
being deleted. */
|
being deleted. */
|
||||||
pxTCB = prvGetTCBFromHandle( xTaskToDelete );
|
pxTCB = prvGetTCBFromHandle( xTaskToDelete );
|
||||||
|
|
||||||
#if (configESP32_PER_TASK_DATA == 1)
|
|
||||||
if (pxTCB->data){
|
|
||||||
vSemaphoreDelete( pxTCB->data );
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
/* Remove task from the ready list and place in the termination list.
|
/* Remove task from the ready list and place in the termination list.
|
||||||
This will stop the task from be scheduled. The idle task will check
|
This will stop the task from be scheduled. The idle task will check
|
||||||
the termination list and free up any memory allocated by the
|
the termination list and free up any memory allocated by the
|
||||||
|
@ -4592,23 +4580,6 @@ TickType_t uxReturn;
|
||||||
|
|
||||||
#endif /* configUSE_TASK_NOTIFICATIONS */
|
#endif /* configUSE_TASK_NOTIFICATIONS */
|
||||||
|
|
||||||
/*-----------------------------------------------------------*/
|
|
||||||
#if (configESP32_PER_TASK_DATA == 1)
|
|
||||||
void* xTaskGetPerTaskData(void)
|
|
||||||
{
|
|
||||||
TCB_t *pxTCB = (TCB_t*)(xTaskGetCurrentTaskHandle());
|
|
||||||
if (pxTCB){
|
|
||||||
if (!pxTCB->data){
|
|
||||||
vSemaphoreCreateBinary(pxTCB->data);
|
|
||||||
}
|
|
||||||
return (void*)(&pxTCB->data);
|
|
||||||
}
|
|
||||||
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
#endif /* configESP32_PER_TASK_DATA */
|
|
||||||
/*-----------------------------------------------------------*/
|
|
||||||
|
|
||||||
#ifdef FREERTOS_MODULE_TEST
|
#ifdef FREERTOS_MODULE_TEST
|
||||||
#include "tasks_test_access_functions.h"
|
#include "tasks_test_access_functions.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -188,9 +188,9 @@ struct dns_api_msg {
|
||||||
|
|
||||||
#if LWIP_NETCONN_SEM_PER_THREAD
|
#if LWIP_NETCONN_SEM_PER_THREAD
|
||||||
#ifdef LWIP_ESP8266
|
#ifdef LWIP_ESP8266
|
||||||
#define LWIP_NETCONN_THREAD_SEM_GET() sys_thread_sem()
|
#define LWIP_NETCONN_THREAD_SEM_GET() sys_thread_sem_get()
|
||||||
#define LWIP_NETCONN_THREAD_SEM_ALLOC()
|
#define LWIP_NETCONN_THREAD_SEM_ALLOC() sys_thread_sem_init()
|
||||||
#define LWIP_NETCONN_THREAD_SEM_FREE()
|
#define LWIP_NETCONN_THREAD_SEM_FREE() sys_thread_sem_deinit()
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
|
@ -64,10 +64,10 @@ typedef struct sys_mbox_s {
|
||||||
|
|
||||||
void sys_arch_assert(const char *file, int line);
|
void sys_arch_assert(const char *file, int line);
|
||||||
uint32_t system_get_time(void);
|
uint32_t system_get_time(void);
|
||||||
sys_sem_t* sys_thread_sem(void);
|
|
||||||
void sys_delay_ms(uint32_t ms);
|
void sys_delay_ms(uint32_t ms);
|
||||||
void* xTaskGetPerTaskData(void);
|
sys_sem_t* sys_thread_sem_init(void);
|
||||||
|
void sys_thread_sem_deinit(void);
|
||||||
|
sys_sem_t* sys_thread_sem_get(void);
|
||||||
|
|
||||||
|
|
||||||
#endif /* __SYS_ARCH_H__ */
|
#endif /* __SYS_ARCH_H__ */
|
||||||
|
|
|
@ -475,17 +475,57 @@ sys_arch_assert(const char *file, int line)
|
||||||
while(1);
|
while(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* This is a super hacky thread-local-storage repository
|
/*
|
||||||
FreeRTOS 8.2.3 & up have thread local storage in the
|
* get per thread semphore
|
||||||
OS, which is how we should do this. Once we upgrade FreeRTOS,
|
*/
|
||||||
we can drop this hacky store and use the FreeRTOS TLS API.
|
sys_sem_t* sys_thread_sem_get(void)
|
||||||
*/
|
|
||||||
sys_sem_t* sys_thread_sem(void)
|
|
||||||
{
|
{
|
||||||
sys_sem_t *sem = (sys_sem_t*)xTaskGetPerTaskData();
|
sys_sem_t *sem = (sys_sem_t*)pvTaskGetThreadLocalStoragePointer(xTaskGetCurrentTaskHandle(), 0);
|
||||||
|
if (!sem){
|
||||||
|
sem = sys_thread_sem_init();
|
||||||
|
}
|
||||||
|
LWIP_DEBUGF(THREAD_SAFE_DEBUG, ("sem_get s=%p\n", sem));
|
||||||
return sem;
|
return sem;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
sys_sem_t* sys_thread_sem_init(void)
|
||||||
|
{
|
||||||
|
sys_sem_t *sem = (sys_sem_t*)malloc(sizeof(sys_sem_t*));
|
||||||
|
|
||||||
|
if (!sem){
|
||||||
|
printf("sem f1\n");
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
*sem = xSemaphoreCreateBinary();
|
||||||
|
if (!(*sem)){
|
||||||
|
free(sem);
|
||||||
|
printf("sem f2\n");
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
LWIP_DEBUGF(THREAD_SAFE_DEBUG, ("sem init %p %p\n", sem, *sem));
|
||||||
|
vTaskSetThreadLocalStoragePointer(xTaskGetCurrentTaskHandle(), 0, sem);
|
||||||
|
|
||||||
|
return sem;
|
||||||
|
}
|
||||||
|
|
||||||
|
void sys_thread_sem_deinit(void)
|
||||||
|
{
|
||||||
|
sys_sem_t *sem = sys_thread_sem_get();
|
||||||
|
if (sem && *sem){
|
||||||
|
LWIP_DEBUGF(THREAD_SAFE_DEBUG, ("sem del:%p %p\n", sem, *sem));
|
||||||
|
vSemaphoreDelete(*sem);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (sem){
|
||||||
|
free(sem);
|
||||||
|
}
|
||||||
|
|
||||||
|
vTaskSetThreadLocalStoragePointer(xTaskGetCurrentTaskHandle(), 0, 0);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
void sys_delay_ms(uint32_t ms)
|
void sys_delay_ms(uint32_t ms)
|
||||||
{
|
{
|
||||||
vTaskDelay(ms/portTICK_RATE_MS);
|
vTaskDelay(ms/portTICK_RATE_MS);
|
||||||
|
|
Loading…
Reference in a new issue