Pracuję nad małym systemem wbudowanym. Kiedy mój Linux uruchamia się w przestrzeni użytkownika, wiem, gdzie są moje urządzenia w pamięci fizycznej. Chcę je odwzorować na wirtualne adresy przestrzeni użytkownika. Obecnie robię to za pomocą modułu jądra. Używam vmalloc/kmalloc (w zależności od rozmiaru), a następnie używam ioremap_page_range na tych zwracanych wirtualnych adresach do mapowania moich adresów fizycznych. Nie sądzę, że jest to właściwy sposób postępowania. Przede wszystkim przydzielam pamięć, a następnie proszę jądro, aby zmapować tę wirtualną przestrzeń adresową na inną fizyczną przestrzeń adresową. (Początkowo zmapowany fizyczny-> wirtualny w vmcall/kmalloc jest trochę bezużyteczny, ponieważ nie dbam o te fizyczne strony.To zdecydowanie nie jest dobre.)Mapowanie adresów fizycznych na adresy wirtualne linux
Zamiast tego istnieje lepszy sposób odwzorowania znanej pamięci fizycznej na użytkownika proces kosmiczny. (Wiem, inny niż mój proces przestrzeni użytkownika, nikt nie zamierzam dotyk że pamięć.)
Dzięki
Muszę zrobić mmap zanim zrobię remap_pfn. Jednak nie chcę tego robić. Nie mam urządzenia związanego z tą pamięcią. Tak więc chcę bezpośrednio odwzorować tę pamięć fizyczną na adres wirtualny. Dzięki –