Frage : Exportieren des Kerngedächtnisses in Benutzerraum using devmap_umem_setup

Hallo, haben

I einen einfachen Pseudo-Treiber, der ziemlich genau weg vom „Schreibens-Gerätebetreibung“ Tutorium kopiert. Was ich versuchte, zu erzielen, war, exportierend zuteilend und Kerngedächtnis von diesem Fahrer in die Benutzerraum-APP. Ich bin nicht interessiert, an, Vorrichtungsgedächtnis zu exportieren, folglich, das ich nur devmap_umem_setup im devmap () Eingang benutzte. Ich habe eine Benutzerraum-APP, die mmap benennt, um das devmap Programm hervorzurufen. Gegründet auf den Rückholwerten aller Programme mit.einbezog beide in den Fahrer wie ddi_umem_alloc, devmap_setup, devmap_umem_setup _setup und der mmap Anruf in der Benutzer-APP scheint sie, dass das Diagramm erfolgreich ist. Jedoch, wenn ich etwas in der Benutzer-APP an dieser Speicheradresse einstelle, die durch mmap zurückgebracht, in der Lage bin ich nicht, es vom Fahrer zurück zu lesen, der das ddi_umem_cookie_t verwendet. Der Wert las zurück im Fahrer, der auf durch das Plätzchen gezeigt, ist unterschiedlich als der ein Satz durch die Benutzerraum-APP. Ich verwende keinen Versatz im mmap und das devmap_umem_setup (0 führend) und die Länge, die überschritten, ist 4096. Meine Frage ist tut das ddi_umem_cookie_t, das durch ddi_umem_alloc Punkt auf die gleiche Speicherstelle eingestellt (nach was Adressenumwandlungen, die geschehen müssen), dass mmap Anruf angenommen zurückgeht, der Versatz 0 ist und Länge 1 Seitengröße (4096) ist und der addr im mmap ist 0.

user APP:

fd=open (“ /devices/pseudo/dummy@0: 0 ", O_RDWR);

mapadd = mmap64 (0, len, (PROT_READ|PROT_WRITE),
MAP_SHARED, Flugleitanlage, 0);


driver:

xsp->umem = ddi_umem_alloc (8192,
DDI_UMEM_SLEEP | DDI_UMEM_PAGEABLE u. (xsp->ucookie));

error = devmap_setup (Entwickler, 0, Asp, addrp, 4096,
prot, maxprot, Markierungsfahnen, credp);

error = devmap_umem_setup (Handgriff, xsp->dip, NULL, xsp->ucookie,
0, 4096, PROT_ALL, DEVMAP_DEFAULTS, NULL);



My Verständnis war dass ich in der Lage sein, auf das Gedächtnis zurückzugreifen gezeigt auf xsp->ucookie (Kernraum) sowie vom mapadd (Benutzerraum) aber die scheint nicht, die case

Any Hilfe zu sein sein viel appreciated.

Thanks

Antwort : Exportieren des Kerngedächtnisses in Benutzerraum using devmap_umem_setup

Ich denke von der Kernseite, Sie möchte auf die Speicherstellen zurückgreifen, die auf durch xsp->umem gezeigt. Wenn das nicht arbeitet, konnten Sie den vollständigen Fahrer bekannt geben?
Weitere Lösungen  
 
programming4us programming4us