RESMGR_OCB_T *ocb)
Классификация: Функция ввода/вывода
Обработчик по умолчанию: NULL (обрабатывается базовым уровнем)
Вспомогательные функции: Нет
Клиентская функция: dup(), dup2(), fcntl(), fork(), spawn*(), fork()
Сообщения: _IO_DUP
Структура данных:
struct _io_dup {
uint16_t type;
uint16_t combine_len;
struct _msg_info info;
uint32_t reserved;
uint32_t key;
};
typedef union {
struct _io_dup i;
} io_dup_t;
Описание: Это обработчик сообщений dup(). Как и в случае с io_close_dup(), вы вряд ли будете обрабатывать это сообщение самостоятельно. За вас это сделает базовый уровень библиотеки.
Возвращает: Код завершения, при помощи вспомогательного макроса _RESMGR_STATUS.
int io_fdinfo(resmgr_context_t *ctp, io_fdinfo_t *msg,
RESMGR_OCB_T *ocb)
Данная функция зарезервирована QSSL для будущего использования. Вам следует инициализировать таблицу функций ввода/вывода при помощи iofunc_func_init() и не изменять данную точку входа.
int io_link(resmgr_context_t *ctp, io_link_t *msg,
RESMGR_HANDLE_T* handle, io_link_extra_t* extra)
Классификация: Функция установления соединения
Обработчик по умолчанию: Нет
Вспомогательные функции: iofunc_link()
Клиентская функция: link()
Сообщения: _IO_CONNECT, подтип IO_CONNECT_LINK
Структура данных:
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_link_t;
typedef union _io_link_extra {
struct _msg_info info;
void *ocb;
char path[1];
struct _io_resmgr_link_extra resmgr;
} io_link_extra_t;
Описание: Создает новую связь (линк) с именем, заданным в поле path структуры msg, к уже существующему имени пути, указанному в поле path параметра extra (переданного вашей функции). Для удобства поле ocb параметра extra содержит указатель на OCB существующего имени пути.
Возвращает: Код завершения, при помощи вспомогательного макроса _RESMGR_STATUS.
int io_lock(resmgr_context_t *ctp, io_lock_t *msg,
RESMGR_OCB_T *ocb)
Данная функция зарезервирована QSSL для будущего использования. Вам следует инициализировать таблицу функций ввода/вывода, используя iofunc_func_init(), и не изменять данную точку входа.
int io_lock_ocb(resmgr_context_t *ctp, void *reserved,
RESMGR_OCB_T *ocb)
Классификация: Функция ввода/вывода (синтезируется библиотекой)
Обработчик по умолчанию: iofunc_lock_ocb_default()
Вспомогательные функции: Нет
Клиентская функция: Все
Сообщения: Нет (синтезируются библиотекой)
Структура данных: Нет
Описание: Эта функция отвечает за блокировку атрибутной записи, на которую указывает OCB. Это сделано для того, чтобы гарантировать одновременный доступ не более одного потока как к самому OCB, так и к соответствующей атрибутной записи. Функции блокировки (и соответствующие функции разблокировки) синтезируются библиотекой администратора ресурсов до начала обработки сообщения и после ее завершения соответственно. Более подробно это описано выше в параграфе «Составные сообщения». Вы почти никогда не будете использовать этот вызов самостоятельно; вместо этого используйте функцию POSIX-уровня по умолчанию.
Возвращает: Код завершения, при помощи вспомогательного макроса _RESMGR_STATUS.
int io_lseek(resmgr_context_t *ctp, io_lseek_t *msg,
RESMGR_OCB_T *ocb)
Классификация: Функция ввода/вывода
Обработчик по умолчанию: iofunc_lseek_default()
Вспомогательные функции: iofunc_lseek()
Клиентская функции: lseek(), fseek(), rewinddir()
Сообщения: _IO_LSEEK
Структура данных:
struct _io_lseek {
uint16_t type;
uint16_t combine_len;
short whence;
uint16_t zero;
uint64_t offset;