Command disabled: backlink
 
Available Languages?:

tn_task_irelease_wait()

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

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

Если задача находится в состоянии 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/tn_task_irelease_wait.txt · Последние изменения: 21.07.2008 02:19 От admin
 
Creative Commons License Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki