Функция приостанавливает выполнение задачи, переводя ее в состояние SUSPENDED из прерывания. Если задача находится в состоянии WAITING, она переводится в состояние WAITING_SUSPENDED.
Функция может приостановить задачи выполняемой на момент получения запроса на прерывание, так и выполнение любой другой задачи.
Вызов:
TN_RETVAL tn_task_isuspend (TN_TCB *task);
Разрешен вызов:
В прерывании
Параметры функции:
task
Возвращаемые значения:
TERR_WRONG_PARAM
1)TERR_NOEXS
2)TERR_WCONTEXT
TERR_OVERFLOW
TERR_WSTATE
TERR_NO_ERR
Пример вызова:
extern TN_TCB tcb_Task1 TN_DATA; tn_sys_interrupt (_T2Interrupt) /* прерывание от таймера */ { IFS0bits.T2IF = 0; /* сброс флага прерывания */ tn_task_isuspend(&tcb_Task1); /* приостановка выполнения задачи tcb_Task1 */ }