iofunc_lock()

Заблокировать ресурс

Прототип:

#include <sys/iofunc.h>
int iofunc_lock( resmgr_context_t *ctp,
io_lock_t *msg,
iofunc_ocb_t *ocb,
iofunc_attr_t *attr );

Аргументы:

ctp
Указатель на структуру resmgr_context_t, которую библиотека менеджера ресурсов использует для передачи контекстной информации между функциями.
msg
Указатель на структуру io_lock_t, содержащую сообщение, полученное менеджером ресурсов.
ocb
Указатель на структуру блока управления открытым контекстом (OCB, Open Control Block) iofunc_ocb_t, созданную при открытии ресурса клиентом.
attr
Указатель на атрибутную запись iofunc_attr_t, описывающую характеристики устройства, связанного с менеджером ресурсов.

Библиотека:

libc

Описание:

Функция iofunc_lock() выполняет требуемые для блокировок POSIX действия. Для получения дополнительной информации см. lockf().

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

EACCES
или EAGAIN Операция F_TLOCK или F_TEST, секция уже заблокирована другим процессом.
EAGAIN
Операция F_TLOCK или F_TEST, файл смапирован с помощью mmap().
EBADF
Недопустимый файловый дескриптор или операция F_LOCK или F_TLOCK выполняется для файлового дескриптора, не открытого для записи.
EDEADLK
Операция F_LOCK, обнаружена взаимоблокировка.
EINTR
Во время выполнения функции был получен сигнал.
EINVAL
Операция не F_LOCK, F_TLOCK, F_TEST, F_ULOCK или размер плюс текущее смещение в файле меньше 0.
ENOMEM
Система не может выделить достаточно памяти для хранения ресурсов блокировки.
EOPNOTSUPP
или EINVAL Текущая реализация не поддерживает блокировку указанного в дескрипторе типа файлов.
EOVERFLOW
Смещение первого или последнего, если размер не 0, байта в запрошенной секции не может быть правильно представлено в объекте типа off_t.

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

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

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

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

iofunc_lock_calloc(), iofunc_lock_free(), lockf(), resmgr_context_t




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