НАЗВА

іoctl - керує пристроями

СИНТАКСИС

#include <sys/ioctl.h>

int ioctl(int d, int request, ...);

/ третім аргументом, як правило є char argp */

ОПИС

Функція іoctl керує пристроями , на які посилаються спеціальні файли. За допомогою запитів іoctl можна керувати багатьма символьними пристроями (character devices) (наприклад, терміналами). Аргумент d повинен бути відкритим дескриптором файлу (пристрою).

Другий аргумент, request, є залежним від пристрою, кодом запиту. Третім аргументом є покажчик на пам'ять, що не має типу. Це традиційно char argp (ще з тих часів, коли void було чинним C), і ми так і будемо використовувати його у цій дискусії.

Параметр request має вбудовану в собі інформацію, чи являється третій аргумент вхідним чи вихідним і, додатково, розмір argp у байтах. Макроси і визначення define, що використовуються для виклику запитів request функції іoctl, знаходяться у файлі <sys/ioctl.h>.

ПОВЕРНЕНЕ ЗНАЧЕННЯ

Звичайно, при успішному завершенні повертається нульове значення. Деякі іoctl використовують повернене значення як параметр виводу і при успішному завершенні повертають позитивне значення. При помилці повернене значення дорівнює -1, і errno присвоюється код помилки.

КОДИ ПОМИЛОК

EBADF : d не є чинним дескриптором.

EFAULT : argp посилається на недоступну область адресного простору.

ENOTTY : d не відповідає символьному пристроєві.

ENOTTY : Вказаний запит не застосовується до типу об'єкта, на який посилається дескриптор d.

EІNVAL : Невірно вказані request або argp.

ВІДПОВІДНІСТЬ СТАНДАРТАМ

Не існує єдиного стандарту. Аргументи, повернені значення і семантика ioctl(2) різні у кожному конкретному випадку, в залежності від драйвера пристрою (виклик є загальним для всіх операцій, що не вписуються у модель потокового вводу/виводу Unix). Передивіться ?ioctl list(2), у якому перелічені більшість викликів іoctl. Виклик іoctl уперше з'явився у версії 7 AT&T Unix.

ДИВІТЬСЯ ТАКОЖ

execve(2), ?fcntl(2), ?ioctl list(2), ?mt(4), ?sd(4), ?tty(4)


Переклав українською Віталій Цибуляк.