Anzeige:
Ergebnis 1 bis 10 von 10

Thema: ANSI C - Kernelmodul einbinden

  1. #1
    Registrierter Benutzer
    Registriert seit
    04.05.2005
    Ort
    Dortmund
    Beiträge
    31

    ANSI C - Kernelmodul einbinden

    Guten Abend!

    Hat jemand eine Idee, wie ich sauber beim Start meines Programmes ein Kernelmodul laden kann? Das Problem ist folgendes: je nach Konfiguration meiner Applikation wird ein von mir erstelltes Modul benötigt - oder auch nicht. Nun möchte ich - je nach Bedingung - das meine Applikation das Modul selbst einbindet wenn die Notwendigkeit besteht.
    Ein einfaches system ("modprobe ...") halte ich für ziemlich häßlich. Gibt es vielleicht irgendeine Bibliothek, mit der sich Module laden lassen?

    Mfg, Lord Kefir

  2. #2
    Administrator Avatar von anda_skoa
    Registriert seit
    17.11.2001
    Ort
    Graz, Österreich
    Beiträge
    5.477
    Schadet es, wenn das Modul immer geladen ist?

    Das Nachladen aus dem Programm zieht einen Haufen Probleme nach, unter anderem muß entweder das Programm als root laufen oder es muß ein Hilfsprogramm starten dessen suid Bit gesetzt ist.

    Ciao,
    _
    Qt/KDE Entwickler
    Debian Benutzer

  3. #3
    Registrierter Benutzer
    Registriert seit
    04.05.2005
    Ort
    Dortmund
    Beiträge
    31
    Das Programm welches das Modul einbinden soll läuft als root-Prozess.

    Hm... trotz google etc. hab' ich keine Bibliothek entdeckt, welche mir helfen könnte - werde wohl gezwungen sein, den Quellcode von insmod etc. zu lesen

    Mfg, Lord Kefir

  4. #4
    Registrierter Benutzer
    Registriert seit
    25.10.2004
    Beiträge
    819
    Zitat Zitat von Lord Kefir
    Hm... trotz google etc. hab' ich keine Bibliothek entdeckt, welche mir helfen könnte - werde wohl gezwungen sein, den Quellcode von insmod etc. zu lesen
    Oder einfach den system-Befehl benutzen, denn für solche Sachen ist er ja gedacht. Ansonsten muss dein Programm immer angepasst werden, wenn sich das Modulladen ändert (wie z.B. von 2.4 auf 2.6)

    Mein Tipp: system("/sbin/modprobe blabla") und system("/sbin/modprobe -r blabla")

  5. #5
    Registrierter Benutzer
    Registriert seit
    04.05.2005
    Ort
    Dortmund
    Beiträge
    31
    Bisher habe ich auch system() provisorisch genutzt. Finde ich irgendwie ziemlich unsexy

    Da mein Modul sowieso ausschließlich für 2.6er-Kernel ist (eine Portierung auf 2.4er steht nicht zur Debatte) ist es anscheinend gar nicht mal so schwer, mir die benötigten Funktionen aus den 'module-init-tools' zu "klauen". Bin jedenfalls gerade dabei.

    Mfg, Lord Kefir

  6. #6
    Registrierter Benutzer
    Registriert seit
    31.08.2003
    Ort
    Kevelaer
    Beiträge
    20
    Zieh dir doch einfach mal den Source von modprobe ein
    Weil Pinguine nicht fliegen können, können sie auch nicht abstürzen!

  7. #7
    Registrierter Benutzer
    Registriert seit
    04.05.2005
    Ort
    Dortmund
    Beiträge
    31
    Mache ich ja gerade... nur eigentlich wollte ich dem entgehen

    Mfg, Lord Kefir

  8. #8
    Registrierter Benutzer
    Registriert seit
    04.05.2005
    Ort
    Dortmund
    Beiträge
    31
    Falls es mal jemanden interessieren sollte: man init_module gibt Auskunft

    Mfg, Lord Kefir

  9. #9
    Registrierter Benutzer Avatar von [0x[90]|
    Registriert seit
    10.05.2005
    Ort
    Filderstadt
    Beiträge
    79
    Warum machst du das ganze nicht wie Beispielsweise die Software VMware? Diese besteht aus dem Hauptprogramm und einem Configurations-Perlscript. Dieses Script laedt/entlaedt dann die benoetigten/nicht benoetigten Module je nach bedarf.

  10. #10
    Registrierter Benutzer
    Registriert seit
    04.05.2005
    Ort
    Dortmund
    Beiträge
    31
    Weil ich es schöner finde, wenn mein Programm das selbst in die Hand nimmt

    Jedenfalls läuft es jetzt wunderbar. Und die 40 Zeilen Code die ich gebraucht habe waren jetzt wirklich kein Problem.

    Mfg, Lord Kefir

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •