1.
#include
#include
static int hello_init(void)
{
printk(KERN_INFO"Hello World!\n");
return 0;
}
static void hello_exit(void)
{
printk(KERN_INFO"Hello Exit!\n");
}
module_init(hello_init);
module_exit(hello_exit);
MODULE_AUTHOR("CJ");
MODULE_LICENSE("Dual BSD/GPL");
MODULE_DESCRIPTION("A simple Hello World Module");
MODULE_ALIAS("a simplest module");
2.
#include
#include
static char *name="CJ";
static int version=1;
static int hello_init(void)
{
printk(KERN_INFO"Hello World!\n");
printk(KERN_INFO"Author of this module:%s\n",name);
printk(KERN_INFO"Module's version:%d\n",version);
return 0;
}
static void hello_exit(void)
{
printk(KERN_INFO"Hello Exit!\n");
}
module_init(hello_init);
module_exit(hello_exit);
module_param(name,charp,S_IRUGO);
module_param(version,int,S_IRUGO);
MODULE_AUTHOR("CJ");
MODULE_LICENSE("Dual BSD/GPL");
MODULE_DESCRIPTION("A simple Hello World Module");
MODULE_ALIAS("a simplest module");
//模块参数module_param(参数名,参数类型,参数读/写权限)
3.
#include
#include
static int c=0;
static int hello_init(void)
{
extern int add_integar(int,int);
c=add_integar(2,3);
printk(KERN_INFO"c=%d\n",c);
return 0;
}
static void hello_exit(void)
{
printk(KERN_INFO"Hello Exit!\n");
}
module_init(hello_init);
module_exit(hello_exit);
module_param(c,int,S_IRUGO);
MODULE_AUTHOR("CJ");
MODULE_LICENSE("Dual BSD/GPL");
MODULE_DESCRIPTION("A simple Hello World Module");
MODULE_ALIAS("a simplest module");
#include
#include
int add_integar(int a,int b)
{
return a+b;
}
int sub_integar(int a,int b)
{
return a-b;
}
static int test_init(void)
{
printk(KERN_INFO"go into!\n");
return 0;
}
static void test_exit(void)
{
printk(KERN_INFO"go out\n!");
}
module_init(test_init);
module_exit(test_exit);
EXPORT_SYMBOL(add_integar);
EXPORT_SYMBOL(sub_integar);
MODULE_AUTHOR("CJ");
MODULE_LICENSE("Dual BSD/GPL");
MODULE_DESCRIPTION("A simple Hello World Module!");
MODULE_ALIAS("a simplest module");
Makefile:
LINUX_SRC ?= ~/linux-3.0
CROSS?=/opt/buildroot-2012.08/arm920t/usr/bin/arm-linux-
CROSS_COMPILE=${CROSS}
PWD := $(shell pwd)
EXTRA_CFLAGS+=-DARCH_ARM
EXTRA_CFLAGS+=-D__KERNEL__
EXTRA_CFLAGS+=-DMODULE
obj-m += test02.o
obj-m += test.o
modules:
@make -C $(LINUX_SRC) M=$(PWD) modules
@make clear
clear:
rm *.o Module* modules* *mod* -rf
clean:
rm *.ko -rf
阅读(986) | 评论(0) | 转发(0) |