iofunc_devctl()

Обработать сообщение _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 системной библиотеки