Update tos_task.c
This commit is contained in:
@@ -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)
|
||||||
|
Reference in New Issue
Block a user