Es.KernelKewbies


 

> Parches
> Estado actual del kernel
> Encargados del Kernel
> Registros IRC
> Registros de cambios
> Vendedores del kernel
> Libros recomendados
> Documentacion
> Proyectos para el kernel
> Enlaces externos
> Lista de correo
> KernelNewbies Wiki
> Scripts utiles



<Manual CVS>


<Estadisticas>





 
  

BUS - DISPOSITIVO DE ACCESO INDEPENDIENTE

Capitulo I. INTRODUCCION

Linux provee una API la cual tiene un ejecucion en las entradas y salidas (E/S) abstractas a traves de todos los buses y dispositivos, permitiendo que los instaladores de los dispositivos se escriban independientemente del tipo de bus.

Capitulo II. CONOCIENDO BUGS (FALLOS EN EL SISTEMA) Y SUPOSICIONES.

Capitulo III. MAPEADO DE E/S DE LA MEMORIA

Obteniendo Acceso al Dispositivo La forma de soporte mas amplia de E/S es el mapeado E/S de la memoria. Esto es una parte del campo de direcciones de la CPU la cual es interpretada no como un acceso a la memoria sino como un acceso al dispositivo. Algunas arquitecturas definen los dispositivos para ser como direcciones fijas, pero muchas tienen algunos métodos de descubrimiento de dispositivos. El bus PCI es un buen ejemplo de una clase de esquema. Este documento no cubre Como recibir una clase de direccion, pero asume que usted esta comenzando con alguna. Las direcciones ba­sicas son de tipo €œlargo no definidos Estas direcciones no deben de ser usadas directamente. En lugar de eso, para obtener una dirección apropiada para pasar a las funciones de acceso descritas abajo, usted debe llamar a ioremap. Una dirección apropiada para acceso al dispositivo le debe de ser retornada a usted. Después de que usted halla terminado de utilizar el dispositivo (diciendo, en sus modulos de salida de rutina), llame iounmap en orden de retornar el campo de la dirección al kernel. Muchas arquitecturas alojan nuevos campos de direcciones cada vez que usted llama a ioremap y ellos lo pueden correr a menos que usted llame a iounmap. Accediendo al Dispositivo La parte de la interface más usada por los instaladores es leer y escribir registros mapeados de la memoria sobre el dispositivo. Las funciones son llamadas: readb, readw, readl, readq, writeb, writew, writel and writeq. Alguos dispositivos (como son los framebuffers) les gustaría usar transferencias largas de 8 bytes al tiempo. Para estos dispositivos, las funciones memcpy_toio, memcpy_fromio y memset_io estan suministradas. No use memset or memcpy sobre direcciones de E/S; estas no garantizan la copia de datos en orden. Las funciones de lectura y escritura son definidas para ser ordenadas. Esto es que la compilación no es permitida para reordenar la secuencia de E/S. Cuando el ordenamiento puede ser compilado optimizadamente, usted puede usar __readb y parecidos para indicar el suave ordenamiento. Use este con cuidado. El rmb provee y lee una “barreraâ€� en la memoria. El wmb provee y escribe una “barreraâ€� en la memoria Mientras las funciones básicas son definidas para ser síncronas con respecto a cada una y ordenadas con respecto a cada uno de los buses de los dispositivos situados en ellos mismos para tener asincronidad. En particular muchos autores son quemados por el hecho de que el bus PCI escribe como en un cartel asincronamente. Un instalador de un autor debe editar y leer del mismo dispositivo para asegurar que la escritura tiene ocurrencia en casos específicos que el autor lo solicita. Esta clase de propiedad no se puede ocultar cuando el instalador escribe en la API. ISA. Funciones de Herencia En kernels anteriores (2.2 y menores) el bus ISA podía ser leido o escrito con estas funciones y sin comenzar a usar ioremap. Este no es un verdadero “longerâ€� en Linux 2.4. Un conjunto de funciones equivalentes existen para instaladores de herencia de puertos. Las funciones son pre-fijadas con 'isa_' y son: isa_readb, isa_writeb, isa_readw, isa_writew, isa_readl, isa_writel, isa_memcpy_fromio y isa_memcpy_toio Estas funciones no deben de ser usadas en nuevos instaladores y ser eventualmente extraidas.

Capitulo IV. ACCEDIENDO AL CAMPO DEL PUERTO

Explicando el Campo del Puerto Otra forma común de soporte para la E/S es el campo del puerto. Este es un rango de direcciones separadas del campo de direcciones normales de la memoria. Acceder a estas direcciones no es generalmente tan rápido como acceder a direcciones de mapeado de memoria y esto también tiene un pequeño campo potente de direcciones. No semejante al mapeado de E/S de la memoria, la no preparación es requerida para acceder al campo del puerto. Accediendo al Campo del Puerto Acceder a este campo es pensar proveer un conjunto de funciones las cuales permiten 8-bits, 16-bits y 32-bits de acceso; también se conocen como byte, word y long. Estas funciones son: inb, inw, inl, outb, outw y outl. Algunas variantes son proveedoras para estas funciones. Algunos dispositivos requiren que el acceso a estos puertos sean bien lentos. Esta funcionalidad esta dada por adicionar una _p al final de la función. Hay también equivalentes a memcpy. Las funciones ins y outs copian bytes, palabras o longs para darle a los puertos. Capitulo V. SUMINISTRANDO FUNCIONES PÚBLICASo también(canal en ingles)