Обработать сообщение _IO_DEVCTL
#include <sys/iofunc.h>
int iofunc_devctl( resmgr_context_t *ctp,
io_devctl_t *msg,
iofunc_ocb_t *ocb,
iofunc_attr_t *attr );
- ctp
- Указатель на структуру resmgr_context_t, которую библиотека менеджера ресурсов использует для передачи контекстной информации между функциями.
- msg
- Указатель на структуру io_devctl_t, содержащую сообщение, полученное менеджером ресурсов.
- ocb
- Указатель на структуру блока управления открытым контекстом (OCB, Open Control Block) iofunc_ocb_t, которая была создана при открытии ресурса клиентом.
- attr
- Указатель на атрибутную запись iofunc_attr_t, описывающую характеристики устройства, связанного с менеджером ресурсов.
libc
Вспомогательная функция iofunc_devctl() реализует POSIX семантику для клиентского вызова devctl(), принимаемого как _IO_DEVCTL
сообщение менеджером ресурсов. Обрабатываются сообщения DCMD_ALL_*
.
Эта функция обрабатывает следующие управляющие сообщения:
- DCMD_ALL_GETFLAGS
- Реализует функционал команды получения флагов функции fcntl().
- DCMD_ALL_SETFLAGS
- Реализует функционал команды установки флагов функции fcntl().
- DCMD_ALL_GETMOUNTFLAGS
- Возвращает флаги монтирования (mount->flags) для ресурса, если для него определена структура mount, иначе
0
.
Поддерживаемые флаги монтирования для DCMD_ALL_GETMOUNTFLAGS включают в себя:
- _MOUNT_READONLY
- Только чтение.
- _MOUNT_NOEXEC
- Не запускать исполняемые файлы.
- _MOUNT_NOSUID
- Не воспринимать setuid биты в файловой системе.
Любые сообщения управляющих устройством возвращают ENOTTY
.
- EOK
- Успешное завершение.
- EINVAL
- Попытка установить флаги для ресурса, который синхронизирован, но не определена структура mount или не определен синхронизированный ввод-вывод.
- ENOTTY
- Неподдерживаемое управляющее сообщение.
ЗОСРВ «Нейтрино»
- Нет
- Обработчик прерываний
- Нет
- Обработчик сигналов
- Да
- В потоке
- Да
devctl(), io_devctl_t, fcntl(), iofunc_attr_t, iofunc_devctl_default(), iofunc_ocb_t, resmgr_context_t
Предыдущий раздел: Описание API системной библиотеки