~~NOTOC~~
===== tn_mutex_lock_polling() =====
Функция предназначена для захвата мютекса без блокировки задачи. Если мютекс еще не заблокирован, он блокируется. Если мютекс заблокирован, сервис возвращает код ошибки ''TERR_TIMEOUT''.
Если задача заблокировала мютекс ранее, сервис возвращает код ошибки ''TERR_ILUSE''. Так же этот код возвращается в том случае, если задача пытается блокировать мютекс с протоколом увеличения приоритета (Priority Ceiling Protocol) и ее приоритет выше порога, заданного при создании мютекса.
**Вызов:**
TN_RETVAL tn_mutex_lock_polling(TN_MUTEX *mutex);
**Разрешен вызов:** \\
В контексте задачи
**Параметры функции:**
; ''mutex'' : указатель на структуру блокируемого мютекса
\\
**Возвращаемые значения:**
; ''TERR_WRONG_PARAM'' : некорректное значение параметра (__замечание:__ данный код возврата возможен только в случае использования сервисов с проверкой параметров)
; ''TERR_NOEXS'' : попытка блокировки несуществующего мютекса
; ''TERR_WCONTEXT'' : попытка блокировки мютекса из обработчика прерывания или пользовательской критической секции
; ''TERR_ILUSE'' : мютекс уже заблокирован задачей, вызвавшей сервис : мютекс использует протокол увеличения приоритета, а задача, пытающаяся заблокировать его имеет приоритет выше порогового
; ''TERR_TIMEOUT'' : мютекс уже заблокирован другой задачей
; ''TERR_NO_ERR'' : успешное выполнение
\\
**Пример вызова:**
TN_MUTEX mutex_test;
if (tn_mutex_lock_polling(&mutex_test) == TERR_NO_ERR)
{
/* успешная попытка блокировки мютекса */
}
\\
----
[[tnkernel:ref:mutex:intro#Сервисы управления мютексами|К списку сервисов]]