Estoy trabajando en un pequeño sistema integrado. Cuando mi linux se inicia en el espacio de usuario, sé dónde están mis dispositivos en la memoria física. Quiero mapearlos en direcciones virtuales de espacio de usuario. Actualmente, lo estoy haciendo a través de un módulo kernel. Uso vmalloc/kmalloc (dependiendo del tamaño) y luego uso ioremap_page_range en las direcciones virtuales devueltas para mapear mis direcciones físicas. No creo que sea la forma correcta de hacerlo. En primer lugar, estoy asignando memoria y luego estoy pidiendo kernel para reasignar ese espacio de direcciones virtuales a un espacio de dirección física diferente. (Inicialmente mapeado físico-> virtual en vmcall/kmalloc es un poco inútil ya que no me importa esas páginas físicas. Esto definitivamente no es bueno.)Asignación de direcciones físicas a la dirección virtual de Linux
En lugar de esto, hay una mejor manera de asignar la memoria física conocida al usuario proceso espacial. (Sé que no sea mi proceso de espacio de usuario, nadie va a tocar esa memoria.)
Gracias
Necesito hacer mmap antes de hacer remap_pfn. Sin embargo, no quiero hacer eso. No tengo un dispositivo conectado con esa memoria. Por lo tanto, quiero asignar directamente esa memoria física a la dirección virtual. Gracias –