ioctl
nombre de la función: ioctl
Función: Dispositivo de control I /O
Uso: int ioctl (int manejar, int cmd, [int * argdx, int argcx]); macro
definido Notas include /asm /ioctl.h:
#define _IOC_NRBITS 8 //palabra número de secuencia de bit de campo (número) anchura, 8bits
campo
palabra poco ancho #define _IOC_TYPEBITS 8 //número mágico (tipo), un campo de bits de anchura 8 bits de palabras
#define _IOC_SIZEBITS 14 //tamaño (size), 14bits anchura de bit
palabra
#define _IOC_DIRBITS campo (dirección) 2 //dirección, 2bits
#define _IOC_NRMASK ((1 < < _IOC_NRBITS) -1) //campo de número de secuencia máscara, 0x000000FF
#define _IOC_TYPEMASK ((1 < < _IOC_TYPEBITS) -1) //enmascarar campo número mágico, 0x000000FF
#define _IOC_SIZEMASK ((1 < < _IOC_SIZEBITS) -1) //tamaño del campo de máscara, 0x00003FFF
#define _IOC_DIRMASK ((1 < < _IOC_DIRBITS) -1) //máscara dirección del campo, 0x00000003
#define _IOC_NRSHIFT 0 //secuencia de desplazamiento campo de número en todo el campo, 0
#define _IOC_TYPESHIFT (_IOC_NRSHIFT + _IOC_NRBITS) //desplazamiento del campo de número mágico, 8
#define _IOC_SIZESHIFT (_IOC_TYPESHIFT + _IOC_TYPEBITS) //magnitud de los campos de desplazamiento, el desplazamiento 16
#define _IOC_DIRSHIFT (_IOC_SIZESHIFT + _IOC_SIZEBITS) //dirección del campo, 30
/*
* bits de dirección.
* /
#define _IOC_NONE 0U //ninguna transmisión de datos
#define _IOC_WRITE 1U //escribir datos en el dispositivo, el conductor debe leer los datos desde el espacio de usuario
#define _IOC_READ 2U //leer los datos desde el controlador de dispositivo debe estar escrito con los datos del espacio de usuario
#define _IOC (dir, tipo, nr, tamaño) \\
(((dir) < < _IOC_DIRSHIFT) |
\\
((tipo) < < _IOC_TYPESHIFT) |
\\
((NR) < < _IOC_NRSHIFT) |
\\
((tamaño) < < _IOC_SIZESHIFT))
/*
* se utiliza para crear números
* /
//no número de comando parámetro de configuración
#define _IO (tipo, nr) _IOC (_IOC_NONE, (tipo), (nr), 0)
//configuración desde el controlador lectura del número de comandos de datos
#define _IOR (tipo, nr, tamaño) _IOC (_IOC_READ, (tipo), (nr), sizeof (tamaño))
//para el escribir datos de comandos del conductor
#define _IOW (tipo, nr, tamaño) _IOC (_IOC_WRITE, (tipo), (nr), sizeof (tamaño))
//para bidireccional transmisión
#define _IOWR (tipo, nr, tamaño) _IOC (_IOC_READ |
_IOC_WRITE, (tipo), (nr), sizeof (tamaño))
/*
* se utiliza para decodificar los números ioctl ..
* /
//analiza los argumentos de la dirección de datos de mando, es decir, escrita o leída
#define _IOC_DIR (nr) (((nr) > > _IOC_DIRSHIFT) &_IOC_DIRMASK)
//analizar los argumentos de la magia del sistema escriba
_IOC_TYPE #define (NR) (((NR) > > _IOC_TYPESHIFT) &_IOC_TYPEMASK)
//desde un parámetro de comando analizar el número ordinal
#define _IOC_NR (nr) (((nr) > > _IOC_NRSHIFT) &_IOC_NRMASK)
//parámetro de análisis de comando desde el tamaño de los datos de usuario
#define _IOC_SIZE (NR) (((NR) > > _IOC_SIZESHIFT) &_IOC_SIZEMASK)
/* ... y para los conductores de los archivos de sonido /... * /
#define IOC_IN (_IOC_WRITE < < _IOC_DIRSHIFT)
#define IOC_OUT (_IOC_READ < < _IOC_DIRSHIFT)
#define IOC_INOUT ((_IOC_WRITE |
_IOC_READ) < < _IOC_DIRSHIFT)
#define IOCSIZE_MASK (_IOC_SIZEMASK < < _IOC_SIZESHIFT)
#define IOCSIZE_SHIFT (_IOC_SIZESHIFT)
Ejemplo de programa:
# include < stdlib.h >
# include < stdio.h >
# include < sys /ioctl.h >
int main (void ) {
stat ..int;
/* uso func 8 para determinar si la unidad predeterminada es extraíble * /
..stat = ioctl (0, 8, 0, 0);
..if (! Stat)
.... printf (" La unidad% c es removible. \\ N ", getdisk () + 'A');
..else
.... printf (" La unidad% c no se puede quitar. \\ n ", getdisk () + 'A');
..return 0;
}
Falta el archivo de cabecera ‘ security /pam_modules.h ’ es parte de la versión de des
Como entusiasta de Linux, después de varias determinaciones, abandonó el sistema dual e instaló L
Al leer un apue, la explicación del área de almacenamiento compartido es inútil. Por esta razón, e
Use los comandos ps y grep para encontrar el proceso zombie #ps -A -ostat, ppid, pid, cmd | Comenta
Sincronización de Linux /diferencia asíncrona y bloqueo /no bloqueo
Realice la transferencia de archivos de windows y windows
Comando más de Linux usando el tutorial
Hablando del problema de partición del sistema Linux
Una revolución en el sistema operativo Sistema Linux 15 años
Cómo dejar que IE abra una nueva ventana para mostrar
Software de calculadora gratuito basado en el sistema Linux recomendado
Introducción a los Comandos Comunes de YUM para Comandos Básicos de Linux
Configurar el entorno PHP bajo Linux XAMPP tutorial básico
Linux DMA ha actualizado la plataforma
Sistema Windows 10 para cambiar el paso de la cuenta de inicio de sesión
¿Dónde está la conexión de banda ancha en el sistema Win8
El usuario administrador del sistema Win8 no puede acceder a la función Metro
Sistema Win8.1 Bluetooth no puede enviar y recibir archivos solución
El sistema Win10 IE abre la pantalla de la página web solución incompleta
Win10 versión oficial a veces no puede abrir el navegador IE11 cómo resolver?