2015-08-15 25 views
1

所以我學習編寫設備驅動程序的printk消息,並寫了這個簡單的一個:的Linux - dmesg的不顯示

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

static int __init gotemp_init(void) 
{ 
     printk(KERN_DEBUG "Hello world"); 
     return 0; 
} 

static void __exit gotemp_exit(void) 
{ 
} 

module_init(gotemp_init); 
module_exit(gotemp_exit); 

MODULE_AUTHOR("Abhinav Jain"); 
MODULE_DESCRIPTION("Simple driver"); 
MODULE_LICENSE("GPL"); 

而生成文件是這樣的:

obj-m := hello.o 

KERNELDIR ?= /lib/modules/$(shell uname -r)/build 
PWD  := $(shell pwd) 

all: 
     $(MAKE) -C $(KERNELDIR) M=$(PWD) 

但輸出的dmesg不打印"Hello world"。 我也試過KERN_INFO但仍然是相同的結果,雖然lsmod顯示模塊hello被加載。

那麼爲什麼消息沒有被記錄?

回答

3

它應該工作得很好。有時,由於緩衝,消息可能遲到。然後需要在字符串的末尾添加換行符以刷新緩衝區。試試看:

printk(KERN_DEBUG "Hello world\n");