一个最简单的Linux 2.6内核驱动模块
2012-12-18 20:08
615 查看
/* hello.c */
#include <linux/module.h> /* Needed by all
modules */
#include <linux/config.h> /* Needed for KERN_ALERT
*/
#include <linux/init.h> /* Needed for the module-macros */
static int __init hello_init(void) // Module entry function specified by module_init()
{
printk(KERN_ALERT "Hello,world!\n");
return 0;
}
static void __exit hello_exit(void) //Module exit function specified by module_exit()
{
printk(KERN_ALERT "Goodbye,cruel world!\n");
}
module_init(hello_init);
module_exit(hello_exit);
MODULE_LICENSE("Dual BSD/GPL"); //should always exist or you’ll get a warning
MODULE_AUTHOR("BENSON"); //optional
MODULE_DESCRIPTION("STUDY_MODULE"); //optional
/* Makefile */
# Makefile 2.6
obj-m += hello.o
KDIR:=/lib/modules/$(shell uname -r)/build
#PWD=$(shell pwd)
all:
make -C $(KDIR) M=$(PWD) modules
clean:
make -C $(KDIR) M=$(PWD) clean
obj-m := hello.o表示编译后生成hello.o模块。
$(KDIR) 指定了内核源码的路径,“M=”表示这是个外部模块,M=$(PWD) 指定了该模块文件所在的路径。
注: makefile预定义了$(PWD)变量,此处可以不必重复定义。
执行#make编译成功后
加载模块
#insmod hello.ko
#lsmod 输出内核已加载模块信息,可以查看到刚刚加载成功的hello模块
……
Module Size Used by
hello 5632 0
可以在日志里查看加载模块时的信息
#vi /var/log/messages
……
Sep 27 13:25:21 localhost kernel: Hello,world!
卸载模块
#rmmod hello.ko
#lsmod 发现hello模块已经被卸载
查看日志信息
#vi /var/log/messages……
…………
Sep 27 13:26:58 localhost kernel: Goodbye,cruel world!
#include <linux/module.h> /* Needed by all
modules */
#include <linux/config.h> /* Needed for KERN_ALERT
*/
#include <linux/init.h> /* Needed for the module-macros */
static int __init hello_init(void) // Module entry function specified by module_init()
{
printk(KERN_ALERT "Hello,world!\n");
return 0;
}
static void __exit hello_exit(void) //Module exit function specified by module_exit()
{
printk(KERN_ALERT "Goodbye,cruel world!\n");
}
module_init(hello_init);
module_exit(hello_exit);
MODULE_LICENSE("Dual BSD/GPL"); //should always exist or you’ll get a warning
MODULE_AUTHOR("BENSON"); //optional
MODULE_DESCRIPTION("STUDY_MODULE"); //optional
/* Makefile */
# Makefile 2.6
obj-m += hello.o
KDIR:=/lib/modules/$(shell uname -r)/build
#PWD=$(shell pwd)
all:
make -C $(KDIR) M=$(PWD) modules
clean:
make -C $(KDIR) M=$(PWD) clean
obj-m := hello.o表示编译后生成hello.o模块。
$(KDIR) 指定了内核源码的路径,“M=”表示这是个外部模块,M=$(PWD) 指定了该模块文件所在的路径。
注: makefile预定义了$(PWD)变量,此处可以不必重复定义。
执行#make编译成功后
加载模块
#insmod hello.ko
#lsmod 输出内核已加载模块信息,可以查看到刚刚加载成功的hello模块
……
Module Size Used by
hello 5632 0
可以在日志里查看加载模块时的信息
#vi /var/log/messages
……
Sep 27 13:25:21 localhost kernel: Hello,world!
卸载模块
#rmmod hello.ko
#lsmod 发现hello模块已经被卸载
查看日志信息
#vi /var/log/messages……
…………
Sep 27 13:26:58 localhost kernel: Goodbye,cruel world!
相关文章推荐
- 从 2.4 到 2.6:Linux 内核可装载模块机制的改变对设备驱动的影响(一)
- 从 2.4 到 2.6:Linux 内核可装载模块机制的改变对设备驱动的影响
- 从 2.4 到 2.6:Linux 内核可装载模块机制的改变对设备驱动的影响
- 【转载】从 2.4 到 2.6:Linux 内核可装载模块机制的改变对设备驱动的影响
- 从 2.4 到 2.6:Linux 内核可装载模块机制的改变对设备驱动的影响(二)
- 从 2.4 到 2.6:Linux 内核可装载模块机制的改变对设备驱动的影响
- 从 2.4 到 2.6:Linux 内核可装载模块机制的改变对设备驱动的影响
- 从 2.4 到 2.6:Linux 内核可装载模块机制的改变对设备驱动的影响
- Linux2.6内核下简单的字符设备驱动及测试
- 从 2.4 到 2.6:Linux 内核可装载模块机制的改变对设备驱动的影响
- 从 2.4 到 2.6:Linux 内核可装载模块机制的改变对设备驱动的影响
- Linux 2.6 内核驱动模块的编译和加载
- 从2.4 到2.6:Linux 内核可装载模块机制的改变对设备驱动的影响
- 从 2.4 到 2.6:Linux 内核可装载模块机制的改变对设备驱动的影响
- 从 2.4 到 2.6:Linux 内核可装载模块机制的改变对设备驱动的影响
- 编译和安装linux内核2.6.24,并且写一个简单的内核驱动测试之
- Linux驱动学习(编写一个最简单的模块)
- 从 2.4 到 2.6:Linux 内核可装载模块机制的改变对设备驱动的影响
- linux 2.6内核简单驱动编写
- 一个基于linux2.6内核下S3C2410触摸屏驱动