~~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#Сервисы управления семафорами|К списку сервисов]]