Ich mᅵchte fᅵr eine Bastelei Shared Memory zwischen Kernelmodul und
Userland verwenden.
Gibt es (unter Linux) eine Limitation, wie viele Bereiche man definiert,
und wie groᅵ die Bereiche sein dᅵrfen?
Eigentlich mᅵchte ich das ganze ja unter Rtai durchfᅵhren.
Dazu mᅵchte ich zwei Bereiche definieren.
im Kernelmodul mit rtai_kmalloc (Key, Groesse) festlegen,
und im Userprogramm mit rtai_malloc (Key,1) wieder hohlen.
In den Testprogrammen funktioniert das wunderbar. In meinen Versuchen
natᅵrlich nicht. Kann es sein dass unter Rtai nur ein Speicherbereich
mᅵglich ist? (Ist mir eben eingefallen, das dies der einzige Unterschied
ist.)
Zur "Verwaltung" lauft das ja ᅵber ein device /dev/rtai_shm das es nur
einmal gibt. Bedeutet das, das so auch nur ein Bereich mᅵglich ist?
Und wie ist das ohne RTai als "normales" Kernelmodul? Je Bereich ein
eigenes Device, oder alle Bereiche ᅵber ein Device?
Danke fᅵr Tips und Hinweise.
Gruᅵ
Martin
Nachdem hier niemand weiterhelfen konnte, ich habe inzwischen den
"Fehler" gefunden.
Zum einen hatte ich in meinem Programm einen Fehler, und zugleich mich
von einem Linux Sicherheitskonzept in die Irre fᅵhren lassen.
Und wenn zwei Dinge zusammen kommen, dannn ... ihr wisst ja selber.
Mein Fehler war, das ich die Variable im Struct, die ich zum Testen
verwendet hatte an anderer Stelle immer wieder ᅵberschrieben hatte.
(Logischer Denkfehler) :-)
Hᅵtte ich eine andere Variable verwendet, dann hᅵtte ich die Daten
gesehen. Dumm gelaufen, aber voll im Sinne von Murphys Gesetzen. ;-)
Was in Linux fᅵr Verwirrung gestiftet hat war, dass das Speichermapping
fᅵr den Bereich im Kernel-Modul ganz andere Adressen ausgespuckt hat
als wie fᅵr den Bereich im Userland. Dazu kommt noch, das bei jedem
Programmaufruf die Userland-Adressen anderst sind, im Kernelmodul
hingegen immer exakt die selben.
Ich hᅵtte beim Zugriff ᅵber "shared memory" immer exakt die selben
Speicheradressen erwartet.
Das Speichermapping sorgt dafᅵr das die unterschiedlichen Adressangaben
bei "shared memory" immer auf die selben Hardware-Adressen im Speicher
zeigen.
Die zufᅵlligen Adressen im Userland sorgen dafᅵr das ein Hack-Angriff
per Bufferᅵberlauf nur sehr schwer mᅵglich wird.
(Ja, da war mal ein c't Bericht dazu.)
Ich hoffe das ich mit der Lᅵsung hier dem einen oder anderen viele
Stunden der Suche und Verzweifelung ersparen kann.
Gruᅵ
Martin
PS: Mindetens 50 Prozent eines vertrakten Fehlers sitzen vor
dem Bildschirm.