Command disabled: backlink
 
Available Languages?:

tn_sem_isignal()

Сервис увеличивает счетчик свободных ресурсов семафора или, другими словами, освобождает семафор в прерывании.

Если семафор был занят, то задача, стоящая первой в очереди ожидающих семафор, активируется после выхода из прерывания. Счетчик ресурсов семафора при этом не меняется.

Если очередь задач ожидающих семафор пуста, и счетчик свободных ресурсов меньше максимального значения, то он увеличивается на единицу. Если счетчик свободных ресурсов равен максимальному значению, то он не увеличивается и сервис возвращает код TERR_OVERFLOW.

Вызов:

TN_RETVAL tn_sem_isignal (TN_SEM *sem);

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

В прерывании

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

sem
указатель на структуру семафора


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

TERR_WRONG_PARAM
некорректное значение параметра (замечание: данный код возврата возможен только в случае использования сервисов с проверкой параметров)
TERR_NOEXS
попытка освобождения объекта, не являющегося семафором.
TERR_WCONTEXT
попытка освобождения семафора в контексте задачи
TERR_OVERFLOW
счетчик свободных ресурсов достиг максимального значение
TERR_NO_ERR
успешное выполнение


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

extern TN_SEM sem_test;
 
tn_sys_interrupt (_T2Interrupt)        /* прерывание от таймера */
{
    IFS0bits.T2IF = 0;                 /* сброс флага прерывания */
    tn_sem_isignal(&sem_test);         /* освобождение семафора sem_test */
}



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

 
tnkernel/ref/sem/tn_sem_isignal.txt · Последние изменения: 04.05.2008 15:33 От admin
 
Creative Commons License Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki