kopia lustrzana https://github.com/espressif/esp-idf
lwip: allow setting LwIP tasks affinity via sdkconfig
In some cases applications need to ensure that WiFi/BT related tasks run on CPU1. This option can be used to set task affinity in such case. https://github.com/espressif/esp-idf/issues/2233#issuecomment-409220381pull/2479/head
rodzic
5bcb7e26d7
commit
5d1ccb9501
|
@ -443,6 +443,31 @@ config TCPIP_TASK_STACK_SIZE
|
||||||
Configure TCP/IP task stack size, used by LWIP to process multi-threaded TCP/IP operations.
|
Configure TCP/IP task stack size, used by LWIP to process multi-threaded TCP/IP operations.
|
||||||
Setting this stack too small will result in stack overflow crashes.
|
Setting this stack too small will result in stack overflow crashes.
|
||||||
|
|
||||||
|
choice TCPIP_TASK_AFFINITY
|
||||||
|
prompt "TCP/IP task affinity"
|
||||||
|
default TCPIP_TASK_AFFINITY_NO_AFFINITY
|
||||||
|
help
|
||||||
|
Allows setting LwIP tasks affinity, i.e. whether the task is pinned to
|
||||||
|
CPU0, pinned to CPU1, or allowed to run on any CPU.
|
||||||
|
Currently this applies to "TCP/IP" task and "Ping" task.
|
||||||
|
|
||||||
|
config TCPIP_TASK_AFFINITY_NO_AFFINITY
|
||||||
|
bool "No affinity"
|
||||||
|
config TCPIP_TASK_AFFINITY_CPU0
|
||||||
|
bool "CPU0"
|
||||||
|
config TCPIP_TASK_AFFINITY_CPU1
|
||||||
|
bool "CPU1"
|
||||||
|
depends on !FREERTOS_UNICORE
|
||||||
|
|
||||||
|
endchoice
|
||||||
|
|
||||||
|
config TCPIP_TASK_AFFINITY
|
||||||
|
hex
|
||||||
|
default FREERTOS_NO_AFFINITY if TCPIP_TASK_AFFINITY_NO_AFFINITY
|
||||||
|
default 0x0 if TCPIP_TASK_AFFINITY_CPU0
|
||||||
|
default 0x1 if TCPIP_TASK_AFFINITY_CPU1
|
||||||
|
|
||||||
|
|
||||||
menuconfig PPP_SUPPORT
|
menuconfig PPP_SUPPORT
|
||||||
bool "Enable PPP support (new/experimental)"
|
bool "Enable PPP support (new/experimental)"
|
||||||
default n
|
default n
|
||||||
|
|
|
@ -426,16 +426,17 @@ sys_mbox_free(sys_mbox_t *mbox)
|
||||||
sys_thread_t
|
sys_thread_t
|
||||||
sys_thread_new(const char *name, lwip_thread_fn thread, void *arg, int stacksize, int prio)
|
sys_thread_new(const char *name, lwip_thread_fn thread, void *arg, int stacksize, int prio)
|
||||||
{
|
{
|
||||||
xTaskHandle CreatedTask;
|
xTaskHandle created_task;
|
||||||
portBASE_TYPE result;
|
portBASE_TYPE result;
|
||||||
|
|
||||||
result = xTaskCreate(thread, name, stacksize, arg, prio, &CreatedTask);
|
result = xTaskCreatePinnedToCore(thread, name, stacksize, arg, prio, &created_task,
|
||||||
|
CONFIG_TCPIP_TASK_AFFINITY);
|
||||||
|
|
||||||
if (result == pdPASS) {
|
if (result != pdPASS) {
|
||||||
return CreatedTask;
|
|
||||||
} else {
|
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return created_task;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*-----------------------------------------------------------------------------------*/
|
/*-----------------------------------------------------------------------------------*/
|
||||||
|
|
Ładowanie…
Reference in New Issue