Сопоставление физических адресов с виртуальными адресами linux

Я работаю над небольшой встроенной системой. Когда мой Linux загружается в пространство пользователя, я знаю, где в физической памяти находятся мои устройства.Я хочу сопоставить их с виртуальными адресами пользовательского пространства. В настоящее время я делаю это через модуль ядра. Я использую vmalloc/kmalloc (в зависимости от размера ), а затем я использую ioremap _диапазон страниц _для возвращаемых виртуальных адресов для сопоставления моих физических адресов. Я не думаю, что это правильный путь. Прежде всего, я выделяю память, а затем прошу ядро ​​переназначить это виртуальное адресное пространство на другое физическое адресное пространство. (Первоначально отображаемый физический ->виртуальный в vmcall/kmalloc довольно бесполезен, так как меня не интересуют эти физические страницы. Это определенно не хорошо.)

Вместо этого есть лучший способ отобразить известную физическую память в процесс пользовательского пространства. (Я знаю, что никто, кроме моего пользовательского процесса, не будет трогать эту память.)

Спасибо

8
задан agent.smith 23 July 2012 в 23:16
поделиться