Art der Datenübergabe zwischen Userprog und Kernelmodul.

02/10/2009 - 00:13 von Martin Freiberg | Report spam
Hi,

Ich bin gerade dabei für eine Bastelei (Zur eigenen Übung) ein
Kernelmodul zu stricken. Dabei stellt sich mir die Frage der
Datenübergabe zwischen Modul und Userland Programm.

Im Modul habe ich einen struct den es mit Daten zu füllen gilt, und
einen weiteren struct von dem ich Daten lesen will.

Auf welchem Weg verwirklicht man hier den Datenaustausch?
Shared memory, ioctl Schnittstelle, oder gar einen Blocktreiber?

Wenn der Datenaustausch schnell gehen soll, ist in dem Fall shared
memory vernünftig, oder ist ein anderer Weg vorzuziehen?

Und was empfiehlt sich, wenn ich innerhalb des struct nur ein einzelnes
Element schreiben will?

Im Userland eine Kopie halten, dort das Element àndern und dann die
Daten des struct auf einen rutsch übertragen? Oder eine ioctl Routine
erstellen die das erledigt? Oder über shared memory, und dort den struct
ablegen?


Gruß
Martin
 

Lesen sie die antworten

#1 stdUser
06/10/2009 - 10:53 | Warnen spam
Hi,

On Fri, 02 Oct 2009 00:13:01 +0200, Martin Freiberg wrote:

Hi,

Ich bin gerade dabei für eine Bastelei (Zur eigenen Übung) ein
Kernelmodul zu stricken. Dabei stellt sich mir die Frage der
Datenübergabe zwischen Modul und Userland Programm.

Im Modul habe ich einen struct den es mit Daten zu füllen gilt, und
einen weiteren struct von dem ich Daten lesen will.

Auf welchem Weg verwirklicht man hier den Datenaustausch? Shared memory,
ioctl Schnittstelle, oder gar einen Blocktreiber?

Wenn der Datenaustausch schnell gehen soll, ist in dem Fall shared
memory vernünftig, oder ist ein anderer Weg vorzuziehen?

Und was empfiehlt sich, wenn ich innerhalb des struct nur ein einzelnes
Element schreiben will?

Im Userland eine Kopie halten, dort das Element àndern und dann die
Daten des struct auf einen rutsch übertragen? Oder eine ioctl Routine
erstellen die das erledigt? Oder über shared memory, und dort den struct
ablegen?


Gruß
Martin



Via Systemcall... indem die "struct *blablubb" im UserSpace mit Daten
befuellt sei und denn diese darob als Argument jenes SysCalls uebergeben
werden kann.

da empfehle ich doch gleich mal ein bisschen lektuere:

Author: Joseph Kong
Title: Designing BSD Rootkits - An introduction to kernel hacking
Contr: No Starch Press

sehr empfehlenswertes Buechlein, da dieses in aeuszerst intuitiv,
uebersichtlicher Weise, dem interessierten Leser, handhabbares Grundwissen
zu vermitteln vermag. Mir hat dieses nette Buechlein hilfreiche Dienste
erwiesen.

MfG

Ähnliche fragen