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