Anzeige:
Ergebnis 1 bis 10 von 10

Thema: ANSI C - Kernelmodul einbinden

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  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!

Lesezeichen

Berechtigungen

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