2016-04-24 10 views
0

Ich weiß, dass diese Frage gestellt wurde, aber ich konnte noch keine nützliche Antwort extrahieren. Ich wäre dankbar, wenn man nicht zu viel komplizierte Antwort geben kann, da mein Linux-Hintergrund nicht so tief ist. Der Grund, warum ich mit physisch zusammenhängenden Frames im Userspace arbeiten muss, ist, dass ich mit dem Hardwaregerät arbeite und den Treiber dieses Geräts im Userspace simuliere, während es eine dünne Schicht Treiber gibt, die ich verwenden sollte. Einer der einfachsten Vorschläge, die ich bekam, bestand darin, in der Kernelschicht des Treibers mit get_free_pages zu reservieren und dann irgendwie mmap zu verwenden, um diesen Speicher im Benutzerbereich nutzbar zu machen. Können Sie diesen Vorschlag bitte erläutern und erläutern? oder schlagen Sie natürlich andere (einfache) Lösungen vor?Verwenden von physikalisch zusammenhängenden Seiten in UserSpace

Danke

+0

Es gibt ziemlich Reihe von Beispielen für implementieren 'mmap'. Was genau hast du damit nicht begriffen? – Tsyvarev

+0

Verwenden Sie kzalloc/kmalloc, um kontinuierlichen physischen Speicher zuzuordnen (oder ioremap, um io zuzuordnen), und verwenden Sie mmap, um es dem Benutzer zuzuordnen. Siehe einfaches Beispiel hier: http://blog.discoversdk.com/using-mmap-to-map-kernel-buffer-to-user-space-example/ –

+0

@SamProtsenko: Die Frage, die Ihre bezieht, arbeitet mit ** nur Benutzerraum ** bedeutet, aber angegebene Frage erzählt explizit von ** Kernel-Treiber **, der geschrieben werden könnte. – Tsyvarev

Antwort

Verwandte Themen