2016-06-09 2 views
1

I는 다음과 같이 기록 간단한 모듈을 가지고커널 모듈 : 인쇄 할 메시지가 없습니다. 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 

어떤 수준 메시지가 출력되도록 도장. 로딩 또는 모듈을 언로드 dmesg를 의하면 어떤 경우에는 출력이 생성되지 않는다

모듈이로드되고 lsmod를 확인 할 수있다.

"KERN_DEBUG"을 낮은 레벨로 바꾸려고 시도했지만 출력이 없으므로 로그 수준이 문제가 아닌 것 같습니다.

어떻게 초기화 함수가 호출되는지 확인할 수 있습니까? 호출되지 않으면 내 오류는 무엇입니까?

저는 아치 리눅스에서 커널 버전 4.6.1-2를 실행하고 컴파일하고 있습니다.

전자 : 죄송합니다

+2

'KERN_DEBUG', 단지'KERN_DEBUG "메시지". "뒤에 쉼표가 없습니다. –

+0

아, 그건 당황 스럽네요. 고맙습니다! – wfc0003

답변

2

KERN_DEBUG 후 쉼표가 안된다. 그래서 다음과 같이 보일 것입니다 :

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