SyncMutexRevive(), SyncMutexRevive_r()

Возобновить работу мьютекса, находящегося в состоянии DEAD

Прототип:

#include <sys/neutrino.h>
int SyncMutexRevive( sync_t *sync );
int SyncMutexRevive_r( sync_t *sync );

Аргументы:

sync
Указатель на объект синхронизации sync_t.

Библиотека:

libc

Описание:

Системные вызовы SyncMutexRevive() и SyncMutexRevive_r() позволяют принудительно перехватить владение мертвым мьютексом sync (находящимся в состоянии DEAD). При успешном выполнении мьютекс будет переведен в состояние LOCK, а владельцем будет принудительно установлен вызывающий поток. Счетчик мьютекса для рекурсивных мьютексов будет установлен в 1.

Эти функции эквивалентны, за исключением способа информирования об ошибках.

Для получения детальной информации о состоянии мьютекса "DEAD", а также о получении уведомлений о смерти мьютекса см. описание системного вызова SyncMutexEvent().

Возвращаемое значение:

SyncMutexRevive()
Если возникла ошибка функция возвращает -1, код ошибки записывается в errno. Любое другое возвращенное значение считается успешным завершением.
SyncMutexRevive_r()
EOK возвращается при успешном завершении. Функция НЕ устанавливает errno. При возникновении ошибки функция возвращает один из представленных ниже кодов.

Коды ошибок:

EFAULT
Возникла ошибка при доступе ядра к объекту sync.
EINVAL
Объект синхронизации sync не существует или не находится в состоянии DEAD.
ETIMEDOUT
Системный вызов прерван таймаутом (см. TimerTimeout()).

Классификация:

ЗОСРВ «Нейтрино»

Точка остановки потока
Нет
Обработчик прерываний
Нет
Обработчик сигналов
Да
В потоке
Да

Тематические ссылки:

sync_t, pthread_mutex_lock(), pthread_mutex_unlock(), SyncTypeCreate(), SyncDestroy(), SyncMutexEvent(), SyncMutexLock(), SyncMutexUnlock()




Предыдущий раздел: Описание API системной библиотеки