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.
|
||||
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
|
||||
bool "Enable PPP support (new/experimental)"
|
||||
default n
|
||||
|
|
|
@ -426,16 +426,17 @@ sys_mbox_free(sys_mbox_t *mbox)
|
|||
sys_thread_t
|
||||
sys_thread_new(const char *name, lwip_thread_fn thread, void *arg, int stacksize, int prio)
|
||||
{
|
||||
xTaskHandle CreatedTask;
|
||||
xTaskHandle created_task;
|
||||
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) {
|
||||
return CreatedTask;
|
||||
} else {
|
||||
if (result != pdPASS) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
return created_task;
|
||||
}
|
||||
|
||||
/*-----------------------------------------------------------------------------------*/
|
||||
|
|
Ładowanie…
Reference in New Issue