~~NOTOC~~
===== tn_task_delete() =====

{{tnkernel:ref:attr_call_task.png|Разрешен вызов только в контексте задачи}}

Функция удаляет задачу, находящуюся в состоянии //DORMANT//. Если удаляемая задача будет находиться в другом состоянии, сервис вернет код ошибки.

Функция сбрасывает поле ''id_task'' TCB задачи, и удаляет задачу из списка доступных в системе. Освободившуюся память можно использовать для создания другой задачи. Процесс удаления необратимый - для запуска удаленной задачи нужно создать ее заново функцией ''tn_task_create''.

**Вызов:**
<code>
TN_RETVAL tn_task_delete(TN_TCB *task);
</code>

**Разрешен вызов:** \\ 

В контексте задачи

**Параметры функции:**

  ; ''task'' : указатель на TCB удаляемой задачи


\\ 
**Возвращаемые значения:**  

  ; ''TERR_WRONG_PARAM'' : некорректное значение параметра (__замечание:__ данный код возврата возможен только в случае использования сервисов с проверкой параметров)
  ; ''TERR_NOEXS'' : попытка удаления объекта, не являющегося задачей (__замечание:__ данный код возврата возможен только в случае использования сервисов с проверкой параметров)
  ; ''TERR_WCONTEXT'' : попытка удаления задачи в прерывании или в пользовательской критической секции : удаляемая задача находится в состоянии, отличном от //DORMANT//
  ; ''TERR_NO_ERR'' : успешное выполнение

\\ 
**Пример вызова:**
<code cpp>
extern TN_TCB tcb_Task1  TN_DATA;

/* ... */
if (need_delete_task_1)
    tn_task_delete(&tcb_Task1);
/* ... */
</code>
\\ 

----
[[tnkernel:ref:task:intro#сервисы_управления_задачами|К списку сервисов]]