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