2016-06-09 2 views
1

У меня есть простой модуль, записывается следующим образом:Модуль ядра: нет сообщений для печати. Вызывается функция init?

#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); 

и

$ cat /proc/sys/kernel/printk 
7  7  7  7 

так что любые сообщения уровня должны выводиться.

Модуль нагрузки и это может быть проверено с lsmod, однако вывод не производится при загрузке или выгрузке модуля и проверки dmesg.

Я попытался заменить «KERN_DEBUG» на более низкие уровни и до сих пор не выводить, поэтому я не думаю, что уровень журнала является проблемой.

Как еще можно проверить функцию init? Если это не вызвано, какова моя ошибка?

Я бегу и компилируюсь против версии ядра 4.6.1-2 в Arch Linux.

е: упс

+2

Без запятой после 'KERN_DEBUG', просто сообщение' KERN_DEBUG '. –

+0

О, это смущает. Спасибо! – wfc0003

ответ

2

Там не должно быть запятой после KERN_DEBUG. Поэтому он должен выглядеть примерно так:

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