Update tos_task.c

This commit is contained in:
daishengdong
2019-10-24 10:32:51 +08:00
parent 06cae326a2
commit db12f050c6

View File

@@ -203,6 +203,29 @@ __API__ k_err_t tos_task_destroy(k_task_t *task)
#if TOS_CFG_TASK_DYNAMIC_CREATE_EN > 0u #if TOS_CFG_TASK_DYNAMIC_CREATE_EN > 0u
__STATIC__ void task_free(k_task_t *task)
{
tos_mmheap_free(task->stk_base);
tos_mmheap_free(task);
}
__KERNEL__ void task_free_all(void)
{
TOS_CPU_CPSR_ALLOC();
k_task_t *task;
k_list_t *curr, *next;
TOS_CPU_INT_DISABLE();
TOS_LIST_FOR_EACH_SAFE(curr, next, &k_dead_task_list) {
task = TOS_LIST_ENTRY(curr, k_task_t, dead_list);
tos_list_del(&task->dead_list);
task_free(task);
}
TOS_CPU_INT_ENABLE();
}
__API__ k_err_t tos_task_create_dyn(k_task_t **task, __API__ k_err_t tos_task_create_dyn(k_task_t **task,
char *name, char *name,
k_task_entry_t entry, k_task_entry_t entry,
@@ -292,8 +315,7 @@ __API__ k_err_t tos_task_destroy_dyn(k_task_t *task)
// we count on the idle task to free the memory // we count on the idle task to free the memory
tos_list_add(&task->dead_list, &k_dead_task_list); tos_list_add(&task->dead_list, &k_dead_task_list);
} else { } else {
tos_mmheap_free(task->stk_base); task_free(task);
tos_mmheap_free(task);
} }
tos_knl_sched_unlock(); tos_knl_sched_unlock();
@@ -301,24 +323,6 @@ __API__ k_err_t tos_task_destroy_dyn(k_task_t *task)
return K_ERR_NONE; return K_ERR_NONE;
} }
__KERNEL__ void task_free_all(void)
{
TOS_CPU_CPSR_ALLOC();
k_task_t *task;
k_list_t *curr, *next;
TOS_CPU_INT_DISABLE();
TOS_LIST_FOR_EACH_SAFE(curr, next, &k_dead_task_list) {
task = TOS_LIST_ENTRY(curr, k_task_t, dead_list);
tos_list_del(&task->dead_list);
tos_mmheap_free(task->stk_base);
tos_mmheap_free(task);
}
TOS_CPU_INT_ENABLE();
}
#endif #endif
__API__ void tos_task_yield(void) __API__ void tos_task_yield(void)