iofunc_ocb_detach()

Освободить ресурсы блока открытого контекста (OCB, Open Control Block)

Прототип:

#include <sys/iofunc.h>
int iofunc_ocb_detach( resmgr_context_t *ctp,
iofunc_ocb_t *ocb );

Аргументы:

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

Библиотека:

libc

Описание:

Функция iofunc_ocb_detach() освобождает все ресурсы, выделенные для ocb, например, смапированную память.


Note: Эта функция не освобождает память, связанную с самим OCB.

Функция iofunc_ocb_detach() также обновляет структуру времени, вызывая iofunc_time_update(), и уменьшает счетчики чтения, записи, блокировки и использования в соответствии с режимом, который использовался при открытии ресурса (из ocb->ioflag).

Счетчики увеличиваются в iofunc_ocb_attach() и отражают количество OCB, использующих управляемый ресурс соответствующим образом (например: ocb->attr->rcount ведёт подсчёт количества OCB, использующих ресурс, указанный в attr, для чтения).

Если используется iofunc_mmap() или iofunc_mmap_default(), необходимо вызвать iofunc_ocb_detach() для очистки. Эта функция вызывается из iofunc_close_ocb().

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

Побитовое ИЛИ флагов, описывающих состояние управляемого ресурса:

IOFUNC_OCB_LAST_READER
Этот OCB был последним, выполнявшим операции чтения ресурса. Этот флаг устанавливается, когда флаг ocb->attr->rcount уменьшается до нуля.
IOFUNC_OCB_LAST_WRITER
Этот OCB был последним, выполнявшим операции записи в ресурс. Этот флаг устанавливается, когда флаг ocb->attr->wcount уменьшается до нуля.
IOFUNC_OCB_LAST_RDLOCK
Этот OCB был последним, удерживающим блокировку чтения ресурса. Этот флаг устанавливается, когда флаг ocb->attr->rlocks уменьшается до нуля.
IOFUNC_OCB_LAST_WRLOCK
Этот OCB был последним, удерживающим блокировку записи в ресурс. Этот флаг устанавливается, когда флаг ocb->attr->wlocks уменьшается до нуля.
IOFUNC_OCB_LAST_INUSE
Этот OCB был последним, кто использовал ресурс. Этот флаг устанавливается, когда флаг ocb->attr->count уменьшается до нуля.

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

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

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

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

iofunc_close_ocb(), iofunc_close_ocb_default(), iofunc_mmap(), iofunc_mmap_default(), iofunc_ocb_attach(), iofunc_ocb_t, iofunc_time_update(), resmgr_context_t




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