Функция переводит задачу из любого состояние в состояние DORMANT. Если задача находится в очереди ожидания какого-либо события или объекта, она удаляется из очереди, а все ресурсы (мютексы) используемые задачей будут освобождены.
Если счетчик запросов на активацию задачи больше 1, то счетчик декрементируется, а задача переводится в состояние READY. Как только задача станет наиболее приоритетной, она запустится с точки входа в функцию задачи (так же как и первый раз после создания). Следует заметить, что задача будет поставлена в очередь готовых к выполнению (этого же приоритета) последней.
Задача может быть выведена из состояния DORMANT с помощью сервисов tn_task_activate()
и tn_task_iactivate()
. В этом случае задача будет запущена с точки входа в функцию задачи и поставлена в очередь готовых к выполнению (этого же приоритета) последней.
Задача не может остановить свое выполнение с помощью сервиса tn_task_terminate()
, для этого необходимо использовать сервис tn_task_exit()
.
Вызов:
TN_RETVAL tn_task_terminate(TN_TCB *task);
Разрешен вызов:
В контексте задачи
Параметры функции:
task
Возвращаемые значения:
TERR_WRONG_PARAM
TERR_NOEXS
TERR_WCONTEXT
TERR_NO_ERR
Пример вызова:
extern TN_TCB tcb_Task1 TN_DATA; /* ... */ if (need_stop_task_1) tn_task_terminate(&tcb_Task1); /* ... */