mirror of
https://github.com/espressif/esp-idf.git
synced 2024-10-05 20:47:46 -04:00
Merge branch 'feature/lwip_task_affinity' into 'master'
lwip: allow setting LwIP tasks affinity via sdkconfig See merge request idf/esp-idf!2913
This commit is contained in:
commit
91f7a9a9e7
@ -10,6 +10,12 @@ config FREERTOS_UNICORE
|
|||||||
This is needed when e.g. another process needs complete control
|
This is needed when e.g. another process needs complete control
|
||||||
over the second core.
|
over the second core.
|
||||||
|
|
||||||
|
# This invisible config value sets the value of tskNO_AFFINITY in task.h.
|
||||||
|
# Intended to be used as a constant from other Kconfig files.
|
||||||
|
# Value is (32-bit) INT_MAX.
|
||||||
|
config FREERTOS_NO_AFFINITY
|
||||||
|
hex
|
||||||
|
default 0x7FFFFFFF
|
||||||
|
|
||||||
choice FREERTOS_CORETIMER
|
choice FREERTOS_CORETIMER
|
||||||
prompt "Xtensa timer to use as the FreeRTOS tick source"
|
prompt "Xtensa timer to use as the FreeRTOS tick source"
|
||||||
|
@ -93,6 +93,9 @@ extern "C" {
|
|||||||
#define tskKERNEL_VERSION_MINOR 2
|
#define tskKERNEL_VERSION_MINOR 2
|
||||||
#define tskKERNEL_VERSION_BUILD 0
|
#define tskKERNEL_VERSION_BUILD 0
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Argument of xTaskCreatePinnedToCore indicating that task has no affinity
|
||||||
|
*/
|
||||||
#define tskNO_AFFINITY INT_MAX
|
#define tskNO_AFFINITY INT_MAX
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -124,6 +124,8 @@ extern void _xt_coproc_init(void);
|
|||||||
#define SYSTICK_INTR_ID (ETS_INTERNAL_TIMER1_INTR_SOURCE+ETS_INTERNAL_INTR_SOURCE_OFF)
|
#define SYSTICK_INTR_ID (ETS_INTERNAL_TIMER1_INTR_SOURCE+ETS_INTERNAL_INTR_SOURCE_OFF)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
_Static_assert(tskNO_AFFINITY == CONFIG_FREERTOS_NO_AFFINITY, "incorrect tskNO_AFFINITY value");
|
||||||
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
unsigned port_xSchedulerRunning[portNUM_PROCESSORS] = {0}; // Duplicate of inaccessible xSchedulerRunning; needed at startup to avoid counting nesting
|
unsigned port_xSchedulerRunning[portNUM_PROCESSORS] = {0}; // Duplicate of inaccessible xSchedulerRunning; needed at startup to avoid counting nesting
|
||||||
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*-----------------------------------------------------------------------------------*/
|
/*-----------------------------------------------------------------------------------*/
|
||||||
|
Loading…
Reference in New Issue
Block a user