Capítulo 3. E/S Mapeada en Memoria

3.1. Obteniendo Acceso al Dispositivo

La forma más ampliamente soportada de E/S es la E/S por mapeo de memoria. Esto es, una parte del espacio de direcciones de la CPU es interpretada no como un acceso a la memoria, sino como un acceso a un dispositivo. Algunas arquitecturas definen dispositivos para estar en una dirección fija, pero la mayoría tiene algún método para descubrir los dispositivos. El bus PCI es un buen ejemplo de este esquema. Este documento no cubre cómo recibir una dirección, sino que asume que ya estás empezando en una. Las direcciones físicas son del tipo unsigned long.

Estas direcciones no deberían de ser usadas directamente. En vez de esto, para obtener una dirección utilizable para pasar a las funciones de acceso descritas posteriormente, debería de llamar a ioremap. Te será devuelta una dirección utilizable para el acceso del dispositivo.

Después de que hayas finalizado de usar el dispositivo (esto es, en la rutina de salida en tu módulo), llama a iounmap para retornar el espacio de direcciones al núcleo. La mayoría de las arquitecturas asignan un nuevo espacio de direcciones cada vez que llamas y haces ioremap, y pueden acabarse a menos que llames a iounmap.