Eu sugiro que você procure no livro do LDD3 , ele é gratuito. Ele explica ioremap no capítulo 9, página 249. Também procure em APIU 3rd edition , capítulo 14.8, página 525. Deixe-me resumir melhor para minhas habilidades:
ioremap é uma função do kernel que permite acessar o hardware através de um mecanismo chamado memória mapeada de E / S. Existem certos endereços na memória que são interceptados pela placa-mãe entre a CPU e a RAM e redirecionados para outro hardware, como discos ou teclado. Não tenho certeza se você pode usar o endereçamento usual por meio de ponteiros ou outras funções do kernel.
I/O memory is simply a region of RAM-like locations that the device makes available to the processor over the bus. This memory can be used for a number of purposes, such as holding video data or Ethernet packets, as well as implementing device registers that behave just like I/O ports (i.e., they have side effects associated with reading and writing them).
mmap é um syscall disponível no espaço do usuário que mapeia uma região de memória de processo para o conteúdo de um arquivo, em vez de uma RAM. Quando você acessa aquela região de memória mapeada, através da referência de ponteiro usual, o kernel traduz para uma operação de arquivo. Basicamente, gravar na memória torna-se gravar em um arquivo. É apenas uma maneira mais extravagante de chamar write ().
Memory-mapped I/O lets us map a file on disk into a buffer in memory so that, when we fetch bytes from the buffer, the corresponding bytes of the file are read. Similarly, when we store data in the buffer, the corresponding bytes are automatically written to the file. This lets us perform I/O without using read or write.
(sidenote) Eu acho que primeiro é chamado de "IO mapeado memória" e segundo é chamado de "memória mapeada IO". Não admira que você esteja confuso.