Обработчик по умолчанию для сообщений _IO_LOCK
#include <sys/iofunc.h>int iofunc_lock_default( resmgr_context_t *ctp,io_lock_t *msg,iofunc_ocb_t *ocb );
io_lock_t
, содержащую сообщение, полученное менеджером ресурсов. См. iofunc_lock().libc
Функция iofunc_lock_default() реализует POSIX семантику для _IO_LOCK
сообщения (генерируемого в результате клиентского вызова fcntl()).
Эту функцию можно поместить на место lock в таблицу io_funcs, передаваемую в resmgr_attach(). Или вызвать iofunc_func_init(), чтобы инициализировать все функции значениями по умолчанию.
Функция iofunc_lock_default() проверяет, имеет ли клиент необходимые права для изменения состояний блокировок ресурса. Это включает проверку разрешений на чтение и запись в зависимости от типа применяемой блокировки. Блокировка изменяет элементы структуры ocb->attr и обновляет ocb->attr->locklist, чтобы зарегистрировать новую блокировку. Эта функция вызывает iofunc_lock() для выполнения фактической работы.
![]() | Если менеджер ресурсов вызывает iofunc_lock_default(), он также должен вызвать iofunc_close_dup_default() и iofunc_unblock_default() в соответствующих обработчиках. |
ЗОСРВ «Нейтрино»
iofunc_func_init(), iofunc_lock(), iofunc_ocb_t, iofunc_time_update(), resmgr_attach(), resmgr_context_t, resmgr_io_funcs_t
Предыдущий раздел: Описание API системной библиотеки