kernel modul, prinkt gibt nichts aus
-
Hallo,
ich bin noch frisch in der Welter der Modulprogrammierung.
In vielen Beispielen, Tutorials und Büchern ist die Ausgabe
nach einem insmod mit abgedruckt. Dort steht dann auch der Text,
z.B. Hello World, der bei init_module durch printk(KERN_INFO "Hello World\n")
ausgegeben werden soll.Ich habe ein solches Beispielprogramm abgeschrieben und konnte es ohne Probleme
erstellen (mit Makefile) und auch mit insmod einbinden. Aber bei mir wird
nichts ausgegeben wenn ich das Modul lade. Rufe ich lsmod auf, ist dort auch
mein Modul gelistet.
Ich benutze Ubuntu 10.10.Weiß jemand, warum printk nichts ausgibt ?
Grüße,
c-mos
-
Wo hast Du denn nachgeguckt, ob was ausgegeben wird?
-
Hallo,
da ich in der Konsole lsmod eingegeben habe, dachte auch, dass ich dort entsprechend die printk Anweisung sehen kann, so wie es bei normalen
C/C++ Programmen auch ist, wenn man printf aufruft.Ich bin nach dem Tutorial auf http://tldp.org/LDP/lkmpg/2.6/html/x59.html gegangen. Aber auch im Buch "Linux Device Drivers, 3rd Edition" steht im
Kapitel 2.2 die Ausgabe von printk.Grüße,
c-mos
-
Und wenn du mal in /var/log/messages nachsiehst?
-
Hallo,
ja da steht das drin, was er ausgeben hat. Manchmal fügt er der Datei
aber auch nichts hinzu. Meine character device wurde auch nicht angelegt
unter /dev/.Wieso erscheint die Ausgabe nicht auf der Konsole ?
Grüße,
c-mos
-
Zeig mal deinen Quellcode und dein Makefile...
Die Gerätedatei musst du wahrscheinlich noch mit mknod anlegen, ungefähr so:mknod /dev/blabla c deine_major deine_minor
-
Ausgaben von printk werden je nach Priorität auf der Konsole oder eben nur in Logs geschrieben. Wenn du "dmesg" eingibst, sollte in dem dann erscheinenden Log deine Ausgabe mit drin sein.
Die verschiedenen Log-Levels stehen in der kernel.h nachschauen.