Die Funktion ioremap() wird verwendet, um die physische Adresse eines E/A-Geräts auf die virtuelle Adresse des Kernels abzubilden. Der Kernel erstellt eine Seitentabelle, d. h. die Zuordnung der virtuellen Adresse zur angeforderten physischen Adresse. Wenn wir iounmap() ausführen, wird diese Zuordnung zerstört.
Die ioremap-Funktion benötigt zwei Parameter:
- Beginn des Speicherbereichs
- Größe des Speicherbereichs
void *ioremap(unsigned long phys_addr, unsigned long size); void iounmap(void * addr)
phys_addr wird nur benötigt, wenn physikalische Speicherbereiche, die durch eine physikalische Adresse beschrieben werden, mit ioremap abgebildet werden. Diese Informationen werden in phys_addr.
gespeichert
Auf vielen Systemen ist der E/A-Speicher auf diese Weise überhaupt nicht direkt zugänglich. Es muss also zuerst ein Mapping eingerichtet werden. Dies ist die Rolle der ioremap-Funktion. Die Funktion ist speziell darauf ausgelegt, E/A-Speicherbereichen virtuelle Adressen zuzuweisen.