Kernelmodul-Speicherzugriff

9

Können zwei verschiedene Kernelmodule von einem Aufruf von ioremap_nocache () auf denselben Speicherbereich zugreifen?

Ich habe einen Wireless-Treiber und ein separates Modul. Ich möchte, dass das separate Modul die Rauschwerte auf der Karte profiliert, während der Treiber noch arbeitet. Daher meine Frage oben.

Eine Möglichkeit, die ich kennengelernt habe, war, einen Kernel-Thread vom Treiber zu starten. Ich habe dann einen Semaphor implementiert, um jegliche Konkurrenzbedingungen zu verhindern, die durch gleichzeitiges Lesen / Schreiben in denselben Adressraum entstehen. Ich hoffte, dass ein untergeordneter Thread in der Lage wäre, auf den gleichen Speicherbereich zuzugreifen.

Leider hat das nicht so funktioniert, wie ich es erwartet hatte. Ich würde mich über Vorschläge freuen.

    
Radagasp 28.01.2013, 17:06

1 Antwort

7

Ich nehme an, Sie beabsichtigen, ein anderes Kernel-Modul zu implementieren, da Sie denken, dass es einfacher ist, Daten zwischen Kernel-Modulen auszutauschen. Aber vielleicht ist es keine gute Wahl. Wenn es möglich ist, das Rauschen im Benutzerbereich zu profilieren, ist eine bessere Lösung, den Profiler im Benutzerbereich zu implementieren.

In dieser Lösung liest der Benutzer-Space-Profiler Daten, führt einige Berechnungen durch und sendet dann das Ergebnis.

Wenn diese Lösung in Ordnung ist, ist die Implementierung wie folgt.

Im Kernel-Modul ist es nur ein Char-Gerät in '/ proc' zu registrieren und 'lesen' und 'schreiben' Primitive zu implementieren. Im Benutzerbereich ist nur der Profiler zu implementieren, Lesen und Schreiben auf dem Char-Gerät. Details und Informationen für diese Implementierung sind alle hier .

    
vitorafsr 02.12.2013, 23:18

Tags und Links