2016-06-09 18 views
1

Ich habe ein einfaches Modul, wie folgt geschrieben:Kernel-Modul: Keine printk-Nachrichten angezeigt. Wird die Init-Funktion aufgerufen?

#include <linux/kernel.h> 
#include <linux/module.h> 
#include <linux/init.h> 

MODULE_LICENSE("GPL"); 

static int __init hellomod_init(void) 
{ 
    printk(KERN_DEBUG, "Hello, world!\n"); 
    return 0; 
} 

static void __exit hellomod_exit(void) 
{ 
    printk(KERN_DEBUG, "Goodbye, world!"); 
} 

module_init(hellomod_init); 
module_exit(hellomod_exit); 

und

Meldungen ausgeben soll
$ cat /proc/sys/kernel/printk 
7  7  7  7 

so dass jede Ebene.

Die Modullasten und dies kann mit lsmod jedoch kein Ausgangssignal erzeugt wird, wenn das Laden oder das Modul und Dmesg Überprüfung Entladen überprüft werden.

Ich habe versucht, "KERN_DEBUG" mit niedrigeren Ebenen und immer noch keine Ausgabe zu ersetzen, so glaube ich nicht, dass das Protokolllevel das Problem ist.

Wie sonst kann ich überprüfen, dass die Init-Funktion aufgerufen wird? Wenn es nicht angerufen wird, was ist mein Fehler?

Ich laufe und kompiliere gegen Kernel-Version 4.6.1-2 auf Arch Linux.

e: oops

+2

Kein Komma nach 'KERN_DEBUG', nur' KERN_DEBUG "Nachricht" '. –

+0

Oh, das ist peinlich. Vielen Dank! – wfc0003

Antwort

2

Es sollte kein Komma nach KERN_DEBUG sein. So sollte es in etwa so aussehen:

static int __init hellomod_init(void) 
{ 
    printk(KERN_DEBUG "Hello, world!\n"); 
    return 0; 
}