Archivo especial cd
Finalidad
Proporciona acceso al controlador de dispositivo CD-ROM.
Descripción
El archivo especial de CD-ROM proporciona acceso de bloques y caracteres (en bruto) a los discos de las unidades de CD-ROM.
El prefijo r en un nombre de archivo especial significa que se accede a la unidad como un dispositivo en bruto en lugar de como un dispositivo de bloque. La realización de E/S en bruto con un disco compacto requiere el rendimiento de todas las transferencias de datos en múltiplos de la longitud de bloque lógico de disco compacto. Además, todas las subrutinas de lseek realizadas en el controlador de dispositivo CD-ROM sin formato deben establecer el puntero de desplazamiento de archivo en un valor que sea un múltiplo del tamaño de bloque lógico especificado.
Controladores de dispositivo CD-ROM
Los discos compactos, utilizados en los controladores de dispositivos CD-ROM, son medios de sólo lectura que proporcionan almacenamiento para grandes cantidades de datos. Los archivos especiales /dev/cd0, /dev/cd1, ... proporcionar acceso de bloque a discos compactos. Los archivos especiales /dev/rcd0, /dev/rc1, ... proporcionar acceso de caracteres.
Cuando se expulsa un disco CD-ROM de la unidad para un sistema de archivos CD-ROM montado, ya no se puede acceder a los archivos del disco compacto. Antes de que se pueda acceder de nuevo a estos archivos, los sistemas de archivos montados desde el CD-ROM deben desmontarse. Los procesos que tienen archivos abiertos en estos sistemas de archivos deben salir. Los procesos que tienen directorios actuales en estos sistemas de archivos deben moverse. Si estas acciones no funcionan, realice un desmontaje forzado.
Otro problema que resulta de la expulsión del disco CD-ROM para un sistema de archivos CD-ROM montado es que el mandato hombre puede dejar de responder. La reinserción del disco CD-ROM no solucionará el problema. Todos los procesos (gráficos y ASCII) deben salir y el sistema de archivos debe desmontarse y montarse de nuevo. Después, se puede volver a iniciar cualquier mandato hombre .
Subrutinas dependientes de dispositivo
La mayoría de las operaciones de CD-ROM se implementan utilizando las subrutinas abrir, lecturay cerrar . Sin embargo, para algunos fines, es necesario utilizar la subrutina openx (ampliada).
| Elemento | Descripción |
|---|---|
| subrutina openx | La subrutina openx está soportada para proporcionar funciones adicionales a la secuencia abierta. La subrutina openx requiere la autorización adecuada para iniciarse. Si se intenta ejecutar esta subrutina sin la autoridad adecuada, se obtiene un valor de retorno de -1, con la variable global errno establecida en EPERM. |
| subrutina ioctl | La operación ioctl de IOCINFO se define para todos los controladores de dispositivo que utilizan la subrutina ioctl . Las operaciones ioctl restantes son todas las operaciones específicas de dispositivo de volumen físico. La modalidad de diagnóstico no es necesaria para la siguiente operación. La operación IOCINFO devuelve una estructura devinfo , que se define en el archivo devinfo.h . |
Códigos de error
Además de los códigos de error listados para las subrutinas ioctl, abrir, lecturay escribir , también son posibles los siguientes códigos de error:
| Elemento | Descripción |
|---|---|
| EACCES | Se ha intentado una subrutina distinta de ioctl o cerrar mientras estaba en modalidad de diagnóstico. |
| EACCES | Se ha intentado una llamada lectura normal mientras se estaba en modalidad de diagnóstico. |
| EFAULT | Dirección de usuario no permitida. |
| OCUPADO | El dispositivo de destino está reservado por otro iniciador. |
| EINVAL | El dispositivo se ha abierto con una modalidad que no es de sólo lectura. |
| EINVAL | Un parámetro nbyte para una subrutina lectura no es un múltiplo par del tamaño de bloque. |
| EINVAL | Una longitud de almacenamiento intermedio de datos de detección mayor que 255 no es válida para una operación ioctl de CDIOCMD . |
| EINVAL | Una longitud de almacenamiento intermedio de datos mayor que la permitida por la unidad no es válida para una operación ioctl de CDIOCMD . |
| EINVAL | Se ha intentado configurar un dispositivo que todavía está abierto. |
| EINVAL | Se ha proporcionado un mandato de configuración no permitido. |
| ARCHIVO | Se ha intentado una llamada abrir para un adaptador SCSI que ya tiene el número máximo permitido de dispositivos abiertos. |
| LISTO | No hay ningún disco compacto en la unidad. |
| ENODEV | Se ha intentado acceder a un dispositivo que no está definido. |
| ENODEV | Se ha intentado cerrar un dispositivo que no se ha definido. |
| EMEDIA | Se ha cambiado el medio. |
| EO | Error de hardware o mandato terminado anormalmente o petición no permitida. |
| EO | Se ha intentado leer más allá del fin de los medios. |
| EPERM | Esta subrutina requiere la autorización adecuada. |
| ESTALE | Se ha expulsado un disco CD-ROM (sin que el usuario primero lo cerrara) y, a continuación, se ha vuelto a insertar o se ha sustituido por un segundo disco. |
| ETIMEDOUT | Una operación de E/S ha superado el valor de temporizador especificado. |