diff --git a/components/esp_http_server/include/esp_http_server.h b/components/esp_http_server/include/esp_http_server.h index 6e4d8771b2..30fee5da81 100644 --- a/components/esp_http_server/include/esp_http_server.h +++ b/components/esp_http_server/include/esp_http_server.h @@ -54,6 +54,7 @@ initializer that should be kept in sync .task_priority = tskIDLE_PRIORITY+5, \ .stack_size = 4096, \ .core_id = tskNO_AFFINITY, \ + .task_caps = (MALLOC_CAP_INTERNAL | MALLOC_CAP_8BIT), \ .server_port = 80, \ .ctrl_port = ESP_HTTPD_DEF_CTRL_PORT, \ .max_open_sockets = 7, \ @@ -168,6 +169,7 @@ typedef struct httpd_config { unsigned task_priority; /*!< Priority of FreeRTOS task which runs the server */ size_t stack_size; /*!< The maximum stack size allowed for the server task */ BaseType_t core_id; /*!< The core the HTTP server task will run on */ + uint32_t task_caps; /*!< The memory capabilities to use when allocating the HTTP server task's stack */ /** * TCP Port number for receiving and transmitting HTTP traffic diff --git a/components/esp_http_server/src/httpd_main.c b/components/esp_http_server/src/httpd_main.c index db1500039e..5dc4d18243 100644 --- a/components/esp_http_server/src/httpd_main.c +++ b/components/esp_http_server/src/httpd_main.c @@ -519,7 +519,8 @@ esp_err_t httpd_start(httpd_handle_t *handle, const httpd_config_t *config) hd->config.stack_size, hd->config.task_priority, httpd_thread, hd, - hd->config.core_id) != ESP_OK) { + hd->config.core_id, + hd->config.task_caps) != ESP_OK) { /* Failed to launch task */ httpd_delete(hd); return ESP_ERR_HTTPD_TASK; diff --git a/components/esp_http_server/src/port/esp32/osal.h b/components/esp_http_server/src/port/esp32/osal.h index 48e3fc412a..092aadbb3f 100644 --- a/components/esp_http_server/src/port/esp32/osal.h +++ b/components/esp_http_server/src/port/esp32/osal.h @@ -25,9 +25,9 @@ typedef TaskHandle_t othread_t; static inline int httpd_os_thread_create(othread_t *thread, const char *name, uint16_t stacksize, int prio, void (*thread_routine)(void *arg), void *arg, - BaseType_t core_id) + BaseType_t core_id, uint32_t caps) { - int ret = xTaskCreatePinnedToCore(thread_routine, name, stacksize, arg, prio, thread, core_id); + int ret = xTaskCreatePinnedToCoreWithCaps(thread_routine, name, stacksize, arg, prio, thread, core_id, caps); if (ret == pdPASS) { return OS_SUCCESS; } @@ -37,7 +37,7 @@ static inline int httpd_os_thread_create(othread_t *thread, /* Only self delete is supported */ static inline void httpd_os_thread_delete(void) { - vTaskDelete(xTaskGetCurrentTaskHandle()); + vTaskDeleteWithCaps(xTaskGetCurrentTaskHandle()); } static inline void httpd_os_thread_sleep(int msecs) diff --git a/components/esp_http_server/src/port/linux/osal.h b/components/esp_http_server/src/port/linux/osal.h index dd2df6aaee..f2d50dfad0 100644 --- a/components/esp_http_server/src/port/linux/osal.h +++ b/components/esp_http_server/src/port/linux/osal.h @@ -21,7 +21,7 @@ typedef TaskHandle_t othread_t; static inline int httpd_os_thread_create(othread_t *thread, const char *name, uint16_t stacksize, int prio, void (*thread_routine)(void *arg), void *arg, - BaseType_t core_id) + BaseType_t core_id, uint32_t caps) { pthread_attr_t thread_attr; pthread_attr_init(&thread_attr); diff --git a/components/esp_https_server/include/esp_https_server.h b/components/esp_https_server/include/esp_https_server.h index b304b6aedd..1de884127e 100644 --- a/components/esp_https_server/include/esp_https_server.h +++ b/components/esp_https_server/include/esp_https_server.h @@ -131,6 +131,7 @@ typedef struct httpd_ssl_config httpd_ssl_config_t; .task_priority = tskIDLE_PRIORITY+5, \ .stack_size = 10240, \ .core_id = tskNO_AFFINITY, \ + .task_caps = (MALLOC_CAP_INTERNAL | MALLOC_CAP_8BIT), \ .server_port = 0, \ .ctrl_port = ESP_HTTPD_DEF_CTRL_PORT+1, \ .max_open_sockets = 4, \