В случае ввода-вывода с отображением в память: IO и ОЗУ, отображенные в память, находятся в одном и том же физическом адресном пространстве ЦП.
Когда мы отображаем любую запоминающую память высокого уровня, мы используем kmap()
, а когда нам нужно отобразить IO, отображенную в памяти, мы используем ioremap()
.
Поэтому мой вопрос заключается в том, почему нам нужно разделить функции для получения виртуального адреса ядра, поскольку оба (IO и RAM, отображенные в памяти) находятся в одном физическом адресном пространстве?
Почему у нас не может быть одной функции , поскольку оба создают виртуальный адрес для некоторого физического адреса процессора.