НАЗВАНИЕ
ioctl - управление устройствами
СИНТАКСИС
ioctl (fildes, command, arg) int fildes, command;
ОПИСАНИЕ
Системный вызов ioctl выполняет различные управляющие
действия над обычными устройствами и псевдоустройствами. Для файлов, не являющихся псевдоустройствами, действия, которые выполняет этот системный вызов, зависят
от устройства. Аргументы command и arg передаются в
файл, ассоциированный с дескриптором fildes, и интерпретируются драйвером устройства. Подобный способ управления для обычных устройств используется редко; основные операции ввода/вывода выполняются с помощью системных вызовов read(2) и write(2).
Действия над псевдоустройствами, выполняемые с помощью системного вызова ioctl, описаны в streamio(7).
Аргумент fildes - это открытый дескриптор файла, являющегося устройством. Аргумент command задает выполняемые действия и зависит от устройства, с которым ведется работа. Наконец, arg задает дополнительную информацию, которая может потребоваться для выполнения указанных действий. Тип аргумента arg зависит от конкретного управляющего действия и является либо целым, либо указателем на специфичную для устройства структуру.
Отметим, что существуют некоторые общие действия, которые выполняются драйверами различных устройств, например общий интерфейс с терминалом [см. termio(7)].
Системный вызов ioctl завершается неудачей для файлов любого типа, если выполнено хотя бы одно из следующих условий:
Системный вызов ioctl также завершается неудачей, если драйвер устройства обнаружит ошибку. В этом случае ошибка возвращается системным вызовом без изменений. Конкретный драйвер может вырабатывать не все ошибки из перечисленных ниже:
СМ. ТАКЖЕ
streamio(7), termio(7) в Справочнике администратора.
ДИАГНОСТИКА
При успешном завершении результат зависит от управляющего действия, но должен быть неотрицательным целым
числом. В случае ошибки возвращается -1, а переменной
errno присваивается код ошибки.