Структура данных:
struct _io_sync {
uint16_t type;
uint16_t сombine_len;
uint32_t flag;
};
typedef union {
struct _io_sync i;
} io_sync_t;
Описание: Это точка входа команды flush (синхронизация носителя информации с буферами — например, диска с дисковым кэшем — прим. ред.). Вспомогательная функция iofunc_sync() принимает поле flag входного сообщения и возвращает одно из следующих значений, которые указывают, какие действия ваш администратор ресурсов должен выполнить:
• 0 — не делать ничего;
• O_SYNC — все, что связано с файлом (включая содержимое файла, элементы каталогов, индексные дескрипторы (inodes), и т.д.) должно присутствовать на носителе и должно быть восстанавливаемым с него.
• O_DSYNC — присутствовать на носителе и быть восстанавливаемыми с него должны только данные файла.
Отметим, что эта функция будет вызываться только в том случае, если вы согласились поддерживать функцию sync
, установив соответствующий флаг в записи точки монтирования.
Возвращает: Код завершения, при помощи вспомогательного макроса _RESMGR_STATUS.
int io_umount(resmgr_context_t *ctp, void *msg,
RESMGR_OCB_T *ocb)
Данная функция зарезервирована QSSL для будущего использования. Вам следует инициализировать таблицу функций ввода/вывода, используя iofunc_func_init(), и не изменять данную точку входа.
int io_unblock(resmgr_context_t *ctp, io_pulse_t *msg,
RESMGR_HANDLE_T *handle, void* reserved)
Классификация: Функция установления соединения (синтезируется ядром и библиотекой)
Обработчик по умолчанию: Нет
Вспомогательные функции: iofunc_unblock()
Клиентская функция: Нет (вызывается ядром вследствие сигнала или тайм-аута)
Сообщения: Нет (синтезируется библиотекой)
Структура данных: (см. вариант io_unblock() для ввода/вывода, ниже)
Описание: Это версия разблокирующего вызова в форме сообщения установления соединения, синтезируемая библиотекой в ответ на импульс от ядра, возникший в результате желания клиента разблокироваться на этапе установления соединения. См. вариант этой функции для ввода/вывода ниже.
Возвращает: Код завершения, при помощи вспомогательного макроса _RESMGR_STATUS.
См. подробное обсуждение стратегий разблокирования в главе «Обмен сообщениями», параграф «Применение флага _NTO_MI_UNBLOCK_REQ».
int io_unblock(resmgr_context_t *ctp, io_pulse_t *msg,
RESMGR_OCB_T *ocb)
Классификация: Функция ввода/вывода (синтезируется ядром и библиотекой)
Обработчик по умолчанию: iofunc_unblock_default()
Вспомогательные функции: iofunc_unblock()
Клиентская функция: Нет (реакция ядра на сигнал или тайм-аут)
Сообщения: Нет (синтезируется библиотекой)
Структура данных: указательна структуру, содержащую прерываемое сообщение
Описание: Это версия разблокирующего вызова для сообщения ввода/вывода, синтезируемая библиотекой в результате импульса от ядра, возникшего вследствие попытки клиента разблокироваться на этапе ввода/вывода. Обработчик io_unblock() для фазы установления соединения почти аналогичен (см. предыдущий параграф).
Общим для обеих обработчиков разблокировки (как для функций установления соединения, так и для функций ввода/вывода) является желание клиента разблокироваться с разрешения администратора ресурсов. Администратор ресурсов обязан ответить на клиентское сообщение, чтобы разблокировать клиента. (Мы это обсуждали в главе «Обмен сообщениями», когда говорили о флагах функции ChannelCreate() — в частности, о флаге _NTO_CHF_UNBLOCK).
Возвращает: Код завершения, при помощи вспомогательного макроса _RESMGR_STATUS.
Подробное обсуждение стратегий разблокирования см. в разделе «Применение флага _NTO_MI_UNBLOCK_REQ» в главе «Обмен сообщениями».
int io_unlink(resmgr_context_t *ctp, io_unlink_t *msg,
RESMGR_HANDLE_T* handle, void* reserved)
Классификация: Функция установления соединения
Обработчик по умолчанию: Нет
Вспомогательные функции: iofunc_unlink()
Клиентская функция: unlink()
Сообщение: _IO_CONNECT, подтип _IO_CONNECT_UNLINK
Структура данных:
struct _io_connect {
// Внутренние поля (как описано выше)
uint16_t path_len;
uint8_t extra_type;
uint16_t extra_len;
char path[1];
};
struct _io_connect_link_reply {
uint32_t reserved1[2];
uint8_t eflag;
uint8_t reserved2[3];
uint32_t umask;
uint16_t nentries;
uint16_t path_len;
};
typedef union {
struct _io_connect connect;
struct _io_connect_link_reply link_reply;
} io_unlink_t;
Описание: Отвечает за уничтожение связей (unlinking) файла, имя пути которого передается в поле path структуры входящего сообщения.
Возвращает: Состояние по применению вспомогательного макроса _RESMGR_STATUS.
int io_unlock_ocb(resmgr_context_t *ctp, void *reserved,
RESMGR_OCB_T *ocb)
Классификация: Функция ввода/вывода (синтезируется библиотекой)
Обработчик по умолчанию: iofunc_unlock_ocb_default()