Using catalogs: /etc/sgml/catalog Using stylesheet: /usr/share/sgml/docbook/utils-0.6.9/docbook-utils.dsl#html Working on: /home/jdavila/lucas/doc-manual-linux-acceso-dispositivos/doc-manual-linux-acceso-dispositivos.xml Accesos a Dispositivos Independientes del Bus

Accesos a Dispositivos Independientes del Bus

Matthew Wilcox

Alan Cox


Tabla de contenidos
1. Introducción
2. Bugs Conocidos Y Suposiciones
3. E/S Mapeada en Memoria
3.1. Obteniendo Acceso al Dispositivo
3.2. Accediendo al dispositivo
3.3. Funciones de Herencia ISA
4. Accesos al Espacio de Puerto
4.1. Espacio de Puerto Explicado
4.2. Accediendo al Espacio de Puerto
5. Funciones Públicas Suministradas
6. Sobre la traducción

Capítulo 1. Introducción

Linux suministra una API que abstrae la realización de E/S a través de todos los buses y dispositivos, permitiendo a los controladores de dispositivos ser escritos independientemente del tipo de bus.


Capítulo 2. Bugs Conocidos Y Suposiciones

Ninguno.


Capítulo 3. E/S Mapeada en Memoria


3.2. Accediendo al dispositivo

La parte de la interface más usada por los controladores es la lectura y escritura de los registros mapeados en memoria del dispositivo. Linux suministra interfaces para leer y escribir cantidades de 8-bits, 16-bits, 32-bits y 64-bits. Debido a un accidente histórico estos son llamados accesos byte, word, long y quad. Ambos accesos de lectura y escritura son soportados; no hay soporte pre-producido en este momento.

Las funciones tienen los nombres readb, readw, readl, readq, writeb, writew, writel y writeq.

A algunos dispositivos (como los framebuffers) les gustaría usar transferencias más grandes de los 8 bytes cada vez. Para estos dispositivos, son suministradas las funciones memcpy_toio, memcpy_fromio y memset_io. No utilices memset o memcpy en direcciones de E/S; no está garantizado que copien los datos en orden.

Las funciones de lectura y escritura están definidas para ser ordenadas. Esto es, al compilador no le está permitido reordenar la secuencia de E/S. Cuando el órden puede ser compilado de forma optimizada, puedes usar __readb y amigos para indicar un órden relajado. Usa esto con cuidado. La rmb suministra una barrera de lectura de memoria. La wmb suministra una barrera de escritura de memoria.

Mientras las funciones básicas son definidas para ser síncronas y ordenadas con respecto a las otras, los dispositivos que están en los buses quizás sean asíncronos. En particular, algunos autores han sido quemados por el hecho de que las escrituras en el bus PCI son realizadas de forma asíncrona. El autor de un controlador debe de emitir una lectura para el mismo dispositivo para asegurarse de que la escritura ha tenido lugar en los casos específicos que quiere el autor. Este tipo de propiedad no puede ser escondida por los escritores de los controladores en la API.


Capítulo 4. Accesos al Espacio de Puerto


Capítulo 5. Funciones Públicas Suministradas


Capítulo 6. Sobre la traducción

Este documento es la traducción de "Bus-Independent Device Accesses", documento que acompaña al código del núcleo de Linux, versión 2.4.18.

Este documento ha sido traducido por Rubén Melcón ; y es publicado por el Proyecto Lucas

Versión de la tradución 0.04 ( Julio de 2002 ).

Si tienes comentarios sobre la traducción, ponte en contacto con Rubén Melcón

Done.