内核模块编译实例 内核模块编译实例

linux 2.6内核 编译模块Makefile 详解!

simple-lkm.c wenjian

######################

#include <linux/module.h>
/* Defines the license for this LKM */
MODULE_LICENSE(“GPL”);
/* Init function called on module entry */
int my_module_init( void )
{
printk(KERN_INFO ”my_module_init called.  Module is now loaded.
“);
return 0;
}
/* Cleanup function called on module exit */
void my_module_cleanup( void )
{
printk(KERN_INFO ”my_module_cleanup called.  Module is now unloaded.
“);
return;
}
/* Declare entry and exit functions */
module_init( my_module_init );
module_exit( my_module_cleanup );

######################

Makefile

##

obj-m += simple-lkm.o
KDIR := /lib/modules/$(shell uname -r)/build
PWD := $(shell pwd)
default:
$(MAKE) -C $(KDIR) SUBDIRS=$(PWD) modules

 插入、检查和删除 LKM
[root@plato]# insmod simple-lkm.ko
[root@plato]# lsmod
Module                  Size  Used by
simple_lkm              1536  0
autofs4                26244  0
video                  13956  0
button                  5264  0
battery                 7684  0
ac                      3716  0
yenta_socket           18952  3
rsrc_nonstatic          9472  1 yenta_socket
uhci_hcd               32144  0
i2c_piix4               7824  0
dm_mod                 56468  3
[root@plato]# rmmod simple-lkm
[root@plato]#

查看来自 LKM 的内核输出

[root@plato]# dmesg | tail -5
cs: IO port probe 0xa00-0xaff: clean.
eth0: Link is down
eth0: Link is up, running at 100Mbit half-duplex
my_module_init called.  Module is now loaded.
my_module_cleanup called.  Module is now unloaded.
[root@plato]#

http://www.360doc.com/content/11/1018/09/2660674_157058933.shtml

http://blog.csdn.net/thewayma/article/details/3339596

http://www.ibm.com/developerworks/cn/linux/l-proc.html

http://hi.baidu.com/fans_cs/blog/item/2f2dcb2bae5f5f24d42af182.html

http://www.kerneltravel.net/?page_id=8

发表评论

电子邮件地址不会被公开。 必填项已用 * 标注

您可以使用这些 HTML 标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>