~~NOTOC~~
===== tn_sem_signal() =====
Сервис увеличивает счетчик свободных ресурсов семафора или, другими словами, //освобождает семафор//.
Если семафор был занят, то задача, стоящая первой в очереди ожидающих семафор, активируется. Счетчик ресурсов семафора при этом не меняется.
Если очередь задач ожидающих семафор пуста, и счетчик свободных ресурсов меньше максимального значения, то он увеличивается на единицу. Если счетчик свободных ресурсов равен максимальному значению, то он не увеличивается и сервис возвращает код ''TERR_OVERFLOW''.
**Вызов:**
TN_RETVAL tn_sem_signal (TN_SEM *sem);
**Разрешен вызов:** \\
В контексте задачи
**Параметры функции:**
; ''sem'' : указатель на структуру семафора
\\
**Возвращаемые значения:**
; ''TERR_WRONG_PARAM'' : некорректное значение параметра (__замечание:__ данный код возврата возможен только в случае использования сервисов с проверкой параметров)
; ''TERR_NOEXS'' : попытка освобождения объекта, не являющегося семафором.
; ''TERR_WCONTEXT'' : попытка освобождения семафора в прерывании или в пользовательской критической секции
; ''TERR_OVERFLOW'' : счетчик свободных ресурсов достиг максимального значение
; ''TERR_NO_ERR'' : успешное выполнение
\\
**Пример вызова:**
TN_SEM sem_test;
tn_sem_signal(&sem_test);
\\
----
[[tnkernel:ref:sem:intro#Сервисы управления семафорами|К списку сервисов]]