|
41 | 41 | #define MP_THREAD_DEFAULT_STACK_SIZE (MP_THREAD_MIN_STACK_SIZE + MICROPY_STACK_CHECK_MARGIN)
|
42 | 42 | #define MP_THREAD_PRIORITY (ESP_TASK_PRIO_MIN + 1)
|
43 | 43 |
|
44 |
| -#if !CONFIG_FREERTOS_ENABLE_STATIC_TASK_CLEAN_UP |
45 |
| -#define FREERTOS_TASK_DELETE_HOOK vTaskPreDeletionHook |
46 |
| -#else |
47 |
| -#define FREERTOS_TASK_DELETE_HOOK vPortCleanUpTCB |
48 |
| -#endif |
49 |
| - |
50 | 44 | // this structure forms a linked list, one node per active thread
|
51 | 45 | typedef struct _mp_thread_t {
|
52 | 46 | TaskHandle_t id; // system id of thread
|
@@ -76,7 +70,7 @@ void mp_thread_init(void *stack, uint32_t stack_len) {
|
76 | 70 | // memory barrier to ensure above data is committed
|
77 | 71 | __sync_synchronize();
|
78 | 72 |
|
79 |
| - // FREERTOS_TASK_DELETE_HOOK needs the thread ready after thread_mutex is ready |
| 73 | + // vTaskPreDeletionHook needs the thread ready after thread_mutex is ready |
80 | 74 | thread = &thread_entry0;
|
81 | 75 | }
|
82 | 76 |
|
@@ -180,9 +174,10 @@ void mp_thread_finish(void) {
|
180 | 174 | mp_thread_mutex_unlock(&thread_mutex);
|
181 | 175 | }
|
182 | 176 |
|
183 |
| -// This is called from the FreeRTOS idle task and is not within Python context, |
184 |
| -// so MP_STATE_THREAD is not valid and it does not have the GIL. |
185 |
| -void FREERTOS_TASK_DELETE_HOOK(void *tcb) { |
| 177 | +// This is called either from vTaskDelete() or from the FreeRTOS idle task, so |
| 178 | +// may not be within Python context. Therefore MP_STATE_THREAD may not be valid |
| 179 | +// and it does not have the GIL. |
| 180 | +void vTaskPreDeletionHook(void *tcb) { |
186 | 181 | if (thread == NULL) {
|
187 | 182 | // threading not yet initialised
|
188 | 183 | return;
|
@@ -243,15 +238,15 @@ void mp_thread_deinit(void) {
|
243 | 238 | // No tasks left to delete
|
244 | 239 | break;
|
245 | 240 | } else {
|
246 |
| - // Call FreeRTOS to delete the task (it will call FREERTOS_TASK_DELETE_HOOK) |
| 241 | + // Call FreeRTOS to delete the task (it will call vTaskPreDeletionHook) |
247 | 242 | vTaskDelete(id);
|
248 | 243 | }
|
249 | 244 | }
|
250 | 245 | }
|
251 | 246 |
|
252 | 247 | #else
|
253 | 248 |
|
254 |
| -void FREERTOS_TASK_DELETE_HOOK(void *tcb) { |
| 249 | +void vTaskPreDeletionHook(void *tcb) { |
255 | 250 | }
|
256 | 251 |
|
257 | 252 | #endif // MICROPY_PY_THREAD
|
0 commit comments