Я пытаюсь создать запись proc. Моя init_module функция, как показано нижеdmesg не показывает инструкцию printk
int init_module()
{
printk(KERN_INFO "proc2:Module Loaded\n");
proc_entry=proc_create_data(proc_name,0644,NULL,&fops,NULL);
if(proc_entry==NULL)
{
printk(KERN_INFO "proc2:Error registering proc entry");
}
else
{
printk(KERN_INFO "proc2:Proc Entry Created");
}
return 0;
}
Ниже приводится метод очистки
void cleanup_module()
{
printk(KERN_INFO "proc2:module unloaded");
remove_proc_entry(proc_name,proc_entry);
}
остальные программы включают в себя функции определения переменной и обратного вызова.
Когда я скомпилирую эту программу, она хорошо компилируется. когда я использую insmod
не отвечает. lsmod
перечисляет мой модуль и показывает, используемые одним (не знаю, что). dmesg
не отображается ни одного из вышеуказанных сообщений printk.
Не могли бы вы рассказать мне, что здесь не так?
удивительно не только сообщение KERN_INFO. но весь модуль начал работать с использованием эха «7»>/proc/sys/kernel/printk –
Поскольку «7» позволяет показывать все виды журналов из KERN_DEBUG в KERN_EMERG, не только конкретный KERN_INFO. – Wayne
Я просто хочу добавить, что он преуспевает только в том случае, если пользователь является root. Перенаправление не получилось бы иначе. Перенаправление можно заменить на '| sudo tee', чтобы заставить его работать. – russoue