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