iofunc_attr_trylock()

Осуществить попытку блокировки атрибутной записи

Прототип:

#include <sys/iofunc.h>
int iofunc_attr_trylock( iofunc_attr_t *attr );

Аргументы:

attr
Указатель на структуру iofunc_attr_t, которую требуется заблокировать

Библиотека:

libc

Описание:

Функция iofunc_attr_trylock() осуществит попытку блокировать атрибутную запись attr, предотвращая изменение информации другими потоками менеджера ресурсов. Если функция не может блокировать атрибутную запись немедленно, то вернет EBUSY.

Вызывать эту функцию (или iofunc_attr_trylock()) необходимо прежде чем внести какие-либо изменения в структуру атрибутной записи. После внесения изменений нужно вызвать iofunc_attr_unlock(), чтобы снять блокировку.

Обратите внимание, что этот механизм блокировки имеет встроенный счетчик. Это означает, что поток может блокировать структуру атрибутной записи несколько раз. Затем поток должен разблокировать структуру атрибутной записи такое же количество раз и только после этого структура будет считаться разблокированной. При попытке другого потока заблокировать структуру, заблокированную текущим потоком, он будет заблокирован.

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

EOK
Успешное завершение.
EBUSY
Вызывающий поток не может блокировать атрибутную запись немедленно.
EAGAIN
На данный момент все мьютексы ядра заняты.

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

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

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

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

iofunc_attr_init(), iofunc_attr_lock(), iofunc_attr_t, iofunc_attr_unlock()




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