Chinaunix首页 | 论坛 | 博客
  • 博客访问: 397437
  • 博文数量: 115
  • 博客积分: 2501
  • 博客等级: 少校
  • 技术积分: 1009
  • 用 户 组: 普通用户
  • 注册时间: 2009-09-23 17:05
文章分类

全部博文(115)

文章存档

2011年(2)

2010年(86)

2009年(27)

我的朋友

分类: 嵌入式

2010-08-04 00:27:23

实验目的是从module1.ko导出函数module1_export_symbol1module2.ko中使用该函数。

module1.c

#include

#include

 

MODULE_LICENSE("Dual BSD/GPL");

 

static int module1_init(void)

{

    printk(KERN_ALERT "Enter module1_init\n");

    return 0;

}

 

static void module1_exit(void)

{

    printk(KERN_ALERT "Enter module1_exit\n");

}

 

int module1_export_symbol1(int a)

{

    printk(KERN_ALERT "==============================\n");

    printk(KERN_ALERT "a = %d\n",a);

    printk(KERN_ALERT "==============================\n");

    return 0;

}

 

module_init(module1_init);

module_exit(module1_exit);

 

EXPORT_SYMBOL(module1_export_symbol1);

 

module2.c

#include

#include

 

MODULE_LICENSE("Dual BSD/GPL");

 

extern int module1_export_symbol1(int a);

 

static int module2_init(void)

{

    printk(KERN_ALERT "Enter module2_init\n");

    module1_export_symbol1(123);

    return 0;

}

 

static void module2_exit(void)

{

    printk(KERN_ALERT "Enter module2_exit\n");

}

 

module_init(module2_init);

module_exit(module2_exit);

 

 

Makefile

obj-m := module1.o module2.o

module-objs := module1.o module2.o

KERNELDIR = /lib/modules/$(shell uname -r)/build

PWD = $(shell pwd)

all:

    $(MAKE) -C $(KERNELDIR) M=$(PWD) modules

clean:

    rm -rf *~ *.o *.mod.c *.markers *.symvers *.order module1.ko module2.ko

 

insmod module1.ko 后出现日志信息“Aug  3 09:01:41 ubuntu kernel: [23158.226786] Enter module1_init

insmod module2.ko后出现日志信息

Aug  3 09:01:52 ubuntu kernel: [23168.827169] Enter module2_init

Aug  3 09:01:52 ubuntu kernel: [23168.827211] ==============================

Aug  3 09:01:52 ubuntu kernel: [23168.827230] a = 123

Aug  3 09:01:52 ubuntu kernel: [23168.827250] ==============================

rmmod module2后将出现日志信息“Aug  3 09:09:32 ubuntu kernel: [23628.450063] Enter module2_exit

rmmod module1后将出现日志信息“Aug  3 09:09:46 ubuntu kernel: [23642.554509] Enter module1_exit

       本实验只是一个简单的内核模块符号导出和使用的例子,复杂的驱动都会将驱动分层,以便提高开发效率和设计灵活性,以及将操作硬件部分与驱动上层分开。这样的驱动会结合autoconfig来配置可移植的软件包。

阅读(473) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~