Makefile
obj-m := word_count.o
#include <linux/module.h>
#include <linux/init.h>
#include <linux/kernel.h>
#include <linux/fs.h>
#include <linux/miscdevice.h>
#include <asm/uaccess.h>
// 初始化Linux驱动
static int __init word_count_init(void)
{
// 输出日志信息
printk("word_count_init_success\n");
return 0;
}
// 卸载Linux驱动
static void __exit word_count_exit(void)
{
// 输出日志信息
printk("word_count_init_exit_success\n");
}
// 注册初始化Linux驱动的函数
module_init( word_count_init);
// 注册卸载Linux驱动的函数
module_exit( word_count_exit);
MODULE_AUTHOR("lining");
MODULE_DESCRIPTION("statistics of word count.");
MODULE_ALIAS("word count module.");
MODULE_LICENSE("GPL");
[root@localhost word_count]# ls /usr/src/kernels/2.6.18-53.el5xen-i686
arch include lib net usr
block init Makefile scripts
crypto ipc mm security
drivers kabi_whitelist Module.kabi sound
fs kernel Module.symvers symsets-2.6.18-53.el5xen.tar.gz
[root@localhost word_count]# ls /usr/src/kernels/2.6.18-53.el5-xen-i686
arch include lib net usr
block init Makefile scripts
crypto ipc mm security
drivers kabi_whitelist Module.kabi sound
fs kernel Module.symvers symsets-2.6.18-53.el5xen.tar.gz
[root@localhost word_count]# make -C /usr/src/kernels/2.6.18-53.el5xen-i686 M=./
make: Entering directory `/usr/src/kernels/2.6.18-53.el5-xen-i686'
Building modules, stage 2.
MODPOST
make: Leaving directory `/usr/src/kernels/2.6.18-53.el5-xen-i686'
[root@localhost word_count]# pwd
/root/drivers/ch06/word_count
[root@localhost word_count]# make -C /usr/src/kernels/2.6.18-53.el5xen-i686 M=/root/drivers/ch06/word_count
make: Entering directory `/usr/src/kernels/2.6.18-53.el5-xen-i686'
LD /root/drivers/ch06/word_count/built-in.o
CC [M] /root/drivers/ch06/word_count/word_count.o
Building modules, stage 2.
MODPOST
CC /root/drivers/ch06/word_count/word_count.mod.o
LD [M] /root/drivers/ch06/word_count/word_count.ko
make: Leaving directory `/usr/src/kernels/2.6.18-53.el5-xen-i686'
[root@localhost word_count]# ls /usr/src/kernels/2.6.18-53.el5xen-i686
arch include lib net usr
block init Makefile scripts
crypto ipc mm security
drivers kabi_whitelist Module.kabi sound
fs kernel Module.symvers symsets-2.6.18-53.el5xen.tar.gz
[root@localhost word_count]# insmod word_count.ko
[root@localhost word_count]# lsmod | grep word_count
word_count 5504 0
[root@localhost word_count]# rmmod word_count
[root@localhost word_count]# dmesg | grep word_count
word_count: no version for "struct_module" found: kernel tainted.
word_count_init_success
word_count_init_exit_success
[root@localhost word_count]# dmesg | grep word_count | tail -n 2
word_count_init_success
word_count_init_exit_success
[root@localhost word_count]#