===== tn_task_irelease_wait() =====
{{tnkernel:ref:attr_call_int.png|Разрешен вызов только в прерывании}} {{tnkernel:ref:attr_call_ct_sw.png|Может привести к переключению контекста}}
Функция выводит задачу из состояния ожидания события вне зависимости от причины ожидания. Функция может быть вызвана только в прерывании.
Если задача находится в состоянии //WAITING//, она переводится в состояние //READY//. Если задача находится в состоянии //WAITING_SUSPEND//, она переводится в состояние //SUSPEND//.
Если задача находилась в состоянии //WAITING// по причине вызова функции ''tn_task_sleep()'', вызов функции ''tn_task_irelease_wait()'' с указателем на эту задачу кроме всего прочего сбрасывает счетчик попыток пробуждения задачи.
Функция не может использоваться для активации задачи, которая находится в состоянии //SUSPEND//.
**Вызов:**
TN_RETVAL tn_task_irelease_wait (TN_TCB *task);
**Разрешен вызов:** \\
В прерывании
**Параметры функции:**
; ''task'' : указатель на TCB задачи
**Возвращаемые значения:**
; ''TERR_WRONG_PARAM'' : некорректное значение параметра (__замечание:__ данный код возврата возможен только в случае использования сервисов с проверкой параметров)
; ''TERR_NOEXS'' : попытка пробуждения объекта, не являющегося задачей
; ''TERR_WCONTEXT'' : попытка пробуждения задачи в пользовательской критической секции или конктексте задачи : задача находится в состоянии, отличном от //WAITING// или //WAITING_SUSPEND//
; ''TERR_NO_ERR'' : успешное выполнение
\\
**Пример вызова:**
extern TN_TCB tcb_Task1 TN_DATA;
tn_sys_interrupt (_T3Interrupt) /* прерывание от таймера */
{
IFS0bits.T2IF = 0; /* сброс флага прерывания */
tn_task_irelease_wait(&tcb_Task1); /* восстановление задачи tcb_Task1 */
}
\\
----
[[tnkernel:ref:task:intro#сервисы_управления_задачами|К списку сервисов]]