resmgr_io_funcs_t

Таблица функций ввода-вывода уровня POSIX

Прототип:

#include <sys/resmgr.h>
typedef struct _resmgr_io_funcs {
unsigned nfuncs;
int (*read) ( resmgr_context_t *ctp, io_read_t *msg, RESMGR_OCB_T *ocb );
int (*write) ( resmgr_context_t *ctp, io_write_t *msg, RESMGR_OCB_T *ocb );
int (*close_ocb) ( resmgr_context_t *ctp, void *reserved, RESMGR_OCB_T *ocb );
int (*stat) ( resmgr_context_t *ctp, io_stat_t *msg, RESMGR_OCB_T *ocb );
int (*notify) ( resmgr_context_t *ctp, io_notify_t *msg, RESMGR_OCB_T *ocb );
int (*devctl) ( resmgr_context_t *ctp, io_devctl_t *msg, RESMGR_OCB_T *ocb );
int (*unblock) ( resmgr_context_t *ctp, io_pulse_t *msg, RESMGR_OCB_T *ocb );
int (*pathconf) ( resmgr_context_t *ctp, io_pathconf_t *msg, RESMGR_OCB_T *ocb );
int (*lseek) ( resmgr_context_t *ctp, io_lseek_t *msg, RESMGR_OCB_T *ocb );
int (*chmod) ( resmgr_context_t *ctp, io_chmod_t *msg, RESMGR_OCB_T *ocb );
int (*chown) ( resmgr_context_t *ctp, io_chown_t *msg, RESMGR_OCB_T *ocb );
int (*utime) ( resmgr_context_t *ctp, io_utime_t *msg, RESMGR_OCB_T *ocb );
int (*openfd) ( resmgr_context_t *ctp, io_openfd_t *msg, RESMGR_OCB_T *ocb );
int (*fdinfo) ( resmgr_context_t *ctp, io_fdinfo_t *msg, RESMGR_OCB_T *ocb );
int (*lock) ( resmgr_context_t *ctp, io_lock_t *msg, RESMGR_OCB_T *ocb );
int (*space) ( resmgr_context_t *ctp, io_space_t *msg, RESMGR_OCB_T *ocb );
int (*shutdown) ( resmgr_context_t *ctp, io_shutdown_t *msg, RESMGR_OCB_T *ocb );
int (*mmap) ( resmgr_context_t *ctp, io_mmap_t *msg, RESMGR_OCB_T *ocb );
int (*msg) ( resmgr_context_t *ctp, io_msg_t *msg, RESMGR_OCB_T *ocb );
int (*reserved) ( resmgr_context_t *ctp, void *msg, RESMGR_OCB_T *ocb );
int (*dup) ( resmgr_context_t *ctp, io_dup_t *msg, RESMGR_OCB_T *ocb );
int (*close_dup) ( resmgr_context_t *ctp, io_close_t *msg, RESMGR_OCB_T *ocb );
int (*lock_ocb) ( resmgr_context_t *ctp, void *reserved, RESMGR_OCB_T *ocb );
int (*unlock_ocb)( resmgr_context_t *ctp, void *reserved, RESMGR_OCB_T *ocb );
int (*sync) ( resmgr_context_t *ctp, io_sync_t *msg, RESMGR_OCB_T *ocb );
} resmgr_io_funcs_t;

Описание:

Структура resmgr_io_funcs_t представляет собой таблицу функций ввода/вывода уровня POSIX, которые используются менеджером ресурсов. Можно инициализировать эту таблицу, вызвав iofunc_func_init() и переопределив обработчики по умолчанию на собственные.

Эта структура включает поле nfuncs, которое указывает, сколько функций находится в таблице (на случай, если структура увеличится в будущем), а также указатели на следующие функции:

Функция: Использование: По умолчанию:
read Обработать сообщения _IO_READ iofunc_read_default()
write Обработать сообщения _IO_WRITE iofunc_write_default()
close_ocb Освободить память, выделенную для OCB iofunc_close_ocb_default()
stat Обработать сообщения _IO_STAT iofunc_stat_default()
notify Обработать сообщения _IO_NOTIFY Отсутствует
devctl Обработать сообщения _IO_DEVCTL iofunc_devctl_default()
unblock Разблокировать ресурс, если операция прервана iofunc_unblock_default()
pathconf Обработать сообщения _IO_PATHCONF iofunc_pathconf_default()
lseek Обработать сообщения _IO_LSEEK iofunc_lseek_default()
chmod Обработать сообщения _IO_CHMOD iofunc_chmod_default()
chown Обработать сообщения _IO_CHOWN iofunc_chown_default()
utime Обработать сообщения _IO_UTIME iofunc_utime_default()
openfd Обработать сообщения _IO_OPENFD iofunc_openfd_default()
fdinfo Обработать сообщения _IO_FDINFO iofunc_fdinfo_default()
lock Обработать сообщения _IO_LOCK iofunc_lock_default()
space Выделить память для ресурса. Отсутствует
shutdown Зарезервировано Отсутствует
mmap Обработать сообщения _IO_MMAP iofunc_mmap_default()
msg Обработать более общую схему обмена сообщениями для управления устройством Отсутствует
reserved Зарезервировано Отсутствует
dup Обработать сообщения _IO_DUP Отсутствует — обрабатывается базовым слоем
close_dup Обработать сообщения _IO_CLOSE iofunc_close_dup_default()
lock_ocb Заблокировать атрибуты для группы сообщений iofunc_lock_ocb_default()
unlock_ocb Разблокировать атрибуты для группы сообщений iofunc_unlock_ocb_default()
sync Обработать сообщения _IO_SYNC iofunc_sync_default()


Note: При использовании iofunc_lock_default(), необходимо также использовать iofunc_close_dup_default() и iofunc_unblock_default().

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

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

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

iofunc_chmod_default(), iofunc_chown_default(), iofunc_close_dup_default(), iofunc_close_ocb_default(), iofunc_devctl_default(), iofunc_fdinfo_default(), iofunc_func_init(), iofunc_lock_default(), iofunc_lock_ocb_default(), iofunc_lseek_default(), iofunc_mmap_default(), iofunc_openfd_default(), iofunc_pathconf_default(), iofunc_read_default(), iofunc_stat_default(), iofunc_sync_default(), iofunc_unblock_default(), iofunc_unlock_ocb_default(), iofunc_utime_default(), iofunc_write_default(), resmgr_connect_funcs_t, resmgr_context_t




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