tn_task_isuspend()

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

Функция приостанавливает выполнение задачи, переводя ее в состояние SUSPENDED из прерывания. Если задача находится в состоянии WAITING, она переводится в состояние WAITING_SUSPENDED.

Функция может приостановить задачи выполняемой на момент получения запроса на прерывание, так и выполнение любой другой задачи.

Вызов:

TN_RETVAL tn_task_isuspend (TN_TCB *task);

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

В прерывании

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

task
указатель на TCB приостанавливаемой задачи


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

TERR_WRONG_PARAM1)
некорректное значение параметра
TERR_NOEXS2)
попытка приостановки выполнения объекта, не являющегося задачей
TERR_WCONTEXT
попытка активации задачи в контексте задачи или в пользовательской критической секции
TERR_OVERFLOW
попытка приостановки выполнения задачи, которая уже находится в состоянии SUSPENDED
TERR_WSTATE
попытка приостановки выполнения задачи, которая находится в состоянии DORMANT
TERR_NO_ERR
успешное выполнение


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

extern TN_TCB tcb_Task1  TN_DATA;
 
tn_sys_interrupt (_T2Interrupt)        /* прерывание от таймера */
{
    IFS0bits.T2IF = 0;                 /* сброс флага прерывания */
    tn_task_isuspend(&tcb_Task1);      /* приостановка выполнения задачи tcb_Task1 */
}



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

1) , 2) данный код возврата возможен только в случае использования сервисов с проверкой параметров