Ioctl

Ioctl

Ioctl es una llamada de sistema en Unix que permite a una aplicación controlar o comunicarse con un driver de dispositivo, fuera de los usuales read/write de datos. Esta llamada se originó en la versión 7 del AT&T Unix. Su nombre abrevia la frase input/output control.

Descripción

Una llamada ioctl toma como parámetros:

  1. un descriptor de archivos abierto
  2. un número de código de requerimiento
  3. también un valor entero, posiblemente sin signo (va al driver), o un puntero a datos (también va al driver y vuelve de él)

El kernel generalmente envía un ioctl directamente al driver, el cual puede interpretar el número de requerimiento y datos en cualquier forma requerida. Los escritores del driver documentan cada número de requerimiento del driver para ese driver particular, y los proveen de constantes en el archivo de cabeceras (*.h)

Algunos sistemas tienen convenciones en su codificación, dentro del número de codificación, el tamaño de los datos a ser transferidos desde o hacia el driver del dispositivo, la dirección de la transferencia de datos y la identidad del driver implementando el requerimiento.

Independientemente de que esa convención se cumpla o no, el kernel y el driver colaboran para entregar un código de error uniforme (señalados por la constante simbólica ENOTTY) a una aplicación que haga un requerimiento al driver que no reconozca.

El nemónico ENOTTY (tradicionalmente asociado con el mensaje textual "Not a typerwriter") viene del hecho de que en los sistemas iniciales que incorporaba una llamada ioctl, solo el dispositivo teletipo (tty) planteaba este error. A través del nemónico simbólico es ajustado por los requerimientos de compatibilidad; algunos sistemas modernos muy útilmente prestan un mensaje más general, como: "Inappropriate device control operation", o la localización del mismo.

TCSETS ejemplifica un ioctl en un puerto serial. Las llamadas de lectura y escritura normales en un puerto serial reciben y envían paquetes de datos. Una llamada ioctl(fd, TCSETS, data), independiente de las llamadas normales I/O, controla varias opciones del controlador, como la manipulación de caracteres especiales, o las señales de salida en el puerto (por ejemplo, la señal DTR).

Enlaces externos


Wikimedia foundation. 2010.

Игры ⚽ Поможем написать курсовую

Mira otros diccionarios:

  • Ioctl — In computing, an ioctl (pronEng|aɪˈɒktəl or i o control ) is part of the user to kernel interface of a conventional operating system. Short for Input/output control , ioctls are typically employed to allow userspace code to communicate with… …   Wikipedia

  • ioctl — ██████████5 % …   Wikipédia en Français

  • IOCTL — I/O Control (Computing » Drivers) …   Abbreviations dictionary

  • IOCTL — Input/Output Control …   Acronyms

  • ioctl — ● ►en n. m. ►SYSTM I/O control. Contrôle des entrées/sorties. En général c est une fonction (ou plusieurs) du noyau qui s occupe de ça …   Dictionnaire d'informatique francophone

  • IOCTL — Input/Output Control …   Acronyms von A bis Z

  • IOCTL — abbr. I/O ConTroL (I/O) comp. abbr. Input/Output Control …   United dictionary of abbreviations and acronyms

  • POSIX terminal interface — The POSIX terminal interface is the generalized abstraction, comprising both an Application Programming Interface for programs, and a set of behavioural expectations for users of a terminal, as defined by the POSIX standard and the Single Unix… …   Wikipedia

  • Netlink — For the modem, see Sega NetLink. Netlink is a socket like mechanism for IPC between the kernel and user space processes, as well as between user space processes alone (like e.g., unix sockets) or a mixture of multiple user space and kernel space… …   Wikipedia

  • TTY-абстракция — Стиль этой статьи неэнциклопедичен или нарушает нормы русского языка. Статью следует исправить согласно стилистическим правилам Википедии. У этого термина существуют и другие значения, см. Tty. Подсистема TTY, или TTY абстракция  это одна из …   Википедия

Compartir el artículo y extractos

Link directo
Do a right-click on the link above
and select “Copy Link”