Available Languages?:

tn_task_terminate()

Разрешен вызов только в контексте задачи Может привести к переключению контекста

Функция переводит задачу из любого состояние в состояние 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
указатель на TCB перезапускаемой задачи


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

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


Пример вызова:

extern TN_TCB tcb_Task1  TN_DATA;
 
/* ... */
if (need_stop_task_1)
    tn_task_terminate(&tcb_Task1);
/* ... */



К списку сервисов

 
tnkernel/ref/task/tn_task_terminate.txt · Последние изменения: 21.07.2008 02:14 От admin
 
Creative Commons License Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki