Chinaunix首页 | 论坛 | 博客
  • 博客访问: 441039
  • 博文数量: 113
  • 博客积分: 446
  • 博客等级: 下士
  • 技术积分: 1229
  • 用 户 组: 普通用户
  • 注册时间: 2012-12-09 16:01
个人简介

Let's go!!!!!

文章分类

全部博文(113)

文章存档

2019年(5)

2018年(4)

2017年(9)

2016年(5)

2015年(39)

2014年(6)

2013年(28)

2012年(17)

分类: LINUX

2013-06-13 10:36:28

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

阅读(934) | 评论(0) | 转发(0) |
0

上一篇:mmap系统调用

下一篇:字符驱动 示例二

给主人留下些什么吧!~~