ioremap() 関数は、I/O デバイスの物理アドレスをカーネル仮想アドレスにマップするために使用されます。カーネルはページ テーブルを作成します。つまり、要求された物理アドレスへの仮想アドレスのマッピングです。iounmap() を実行すると、このマッピングは破棄されます。
ioremap 関数は 2 つのパラメーターを取ります:
- メモリ領域の開始
- メモリ領域のサイズ
void *ioremap(unsigned long phys_addr, unsigned long size); void iounmap(void * addr)
phys_addr 物理アドレスで記述された物理メモリ領域が ioremap でマップされている場合にのみ必要です。この情報は phys_addr に保持されます。
多くのシステムでは、この方法で I/O メモリに直接アクセスすることはまったくできません。そのため、最初にマッピングを設定する必要があります。これが ioremap 関数の役割です。この関数は、特に仮想アドレスを I/O メモリ領域に割り当てるように設計されています。