Функция приостанавливает выполнение задачи, переводя ее в состояние SUSPENDED. Если задача находится в состоянии WAITING, она переводится в состояние WAITING_SUSPENDED.
Функция может приостановить как выполнение текущей задачи, так и выполнение любой другой задачи.
Вызов:
TN_RETVAL tn_task_suspend (TN_TCB *task);
Разрешен вызов:
В контексте задачи
Параметры функции:
-
task
- указатель на TCB приостанавливаемой задачи
Возвращаемые значения:
-
TERR_WRONG_PARAM
- некорректное значение параметра (замечание: данный код возврата возможен только в случае использования сервисов с проверкой параметров)
-
TERR_NOEXS
- попытка приостановки выполнения объекта, не являющегося задачей (замечание: данный код возврата возможен только в случае использования сервисов с проверкой параметров)
-
TERR_WCONTEXT
- попытка приостановки выполнения задачи в прерывании или в пользовательской критической секции
-
TERR_OVERFLOW
- попытка приостановки выполнения задачи, которая уже находится в состоянии SUSPENDED
-
TERR_WSTATE
- попытка приостановки выполнения задачи, которая находится в состоянии DORMANT
-
TERR_NO_ERR
- успешное выполнение
Пример вызова:
extern TN_TCB tcb_Task1 TN_DATA;
/* ... */
if (need_suspend_task_1)
tn_task_suspend(&tcb_Task1);
/* ... */
К списку сервисов