Таблица функций ввода-вывода уровня 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() |
При использовании 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 системной библиотеки