现在开始学习Linux设备驱动程序。看的书是Linux设备驱动程序(第三版)。
很多时候printk都不能将消息打印到控制台,因为printk是内核的打印函数,他是有优先级的。具体的没有去深入研究,暂时在网上查到。
有一系列的宏定义。
在源代码的include/linux/kernel.h中定义
#define KERN_EMERG 0
#define KERN_ALERT 1
#define KERN_CRIT 2
#define KERN_WARNING 4
#define KERN_NOTICE 5
printk("<0>""Hello World Init\n");这是把控制台的级别设置最高。可以打印出来。
/*helloworld.c*/
#include <linux/module.h>
#include <linux/init.h>
#include <linux/kernel.h>
static int __init hellowordInit(void)
{
printk("<0>""Hello World Init\n");
return 0;
}
static void __exit helloworldExit(void)
{
printk("<0>""Hello wrold exit\n");
}
MODULE_LICENSE("GPL");
module_init(hellowordInit);
module_exit(helloworldExit);
makefile中的内容为简单的一句
obj-m=helloworld.o
采用下述编译方法进行编译 注意网上很多编译的方法是针对2.4内核的。使用2.4内核的编译方法编译2.6内核会出错。
make -C /usr/src/kernels/2.6.18-53.el5-i686/ M=$(pwd) modules