Функция предназначена для захвата мютекса без блокировки задачи. Если мютекс еще не заблокирован, он блокируется. Если мютекс заблокирован, сервис возвращает код ошибки 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) { /* успешная попытка блокировки мютекса */ }