La funzione ioremap() viene utilizzata per mappare gli indirizzi fisici di un dispositivo I/O all'indirizzo virtuale del kernel. Il kernel crea una tabella di pagina, ovvero la mappatura dell'indirizzo virtuale all'indirizzo fisico richiesto. Quando eseguiamo iounmap() questa mappatura viene distrutta.
La funzione ioremap accetta due parametri:
- inizio della regione di memoria
- dimensione della regione di memoria
void *ioremap(unsigned long phys_addr, unsigned long size); void iounmap(void * addr)
indirizzo_fisico è richiesto solo se le aree di memoria fisica descritte da un indirizzo fisico sono mappate con ioremap. Queste informazioni sono conservate in phys_addr.
Su molti sistemi, la memoria I/O non è affatto accessibile direttamente in questo modo. Quindi è necessario prima impostare una mappatura. Questo è il ruolo della funzione ioremap. La funzione è progettata specificamente per assegnare indirizzi virtuali alle regioni di memoria I/O.