读书人

关于内核中 EXPORT_SYMBOL 导出变量的

发布时间: 2012-09-10 11:02:32 作者: rapoo

关于内核中 EXPORT_SYMBOL 导出变量的实例

在内核中,可以通过这两个宏将变量导出,供其他模块使用:

EXPORT_SYMBOL();

EXPORT_SYMBOL_GPL();

实例:

hello.c:

/***********************************************************************@@ 函数名: hello.c@ 功能: 模块1,生成hello.ko,在这里定义了变量symbol_lxp@  并用EXPORT_SYMBOL 将该变量导出@ 作者: xiangpingli@ 日期: 2012-08-28@************************************************************************/#include <linux/init.h>#include <linux/module.h>MODULE_LICENSE("Dual BSD/GPL");int symbol_lxp = 123;EXPORT_SYMBOL(symbol_lxp);static int hello_init(void){printk(KERN_ALERT "Hello, World!\n");return 0;}static void hello_exit(void){printk(KERN_ALERT "Goodbye, cruel world!\n");}module_init(hello_init);module_exit(hello_exit);

hello2.c:

/***********************************************************************@@ 文件: hello2.c@ 功能: 模块2,生成hello2.ko@ 使用了从hello.ko导出的symbol_lxp变量@ 作者: xiangpingli@ 日期: 2012-08-28@************************************************************************/#include <linux/init.h>#include <linux/module.h>MODULE_LICENSE("Dual BSD/GPL");extern int symbol_lxp;static int hello2_init(void){printk(KERN_ALERT "Hello2, World!\n");printk("symbol_lxp defined in hello.ko: symbol_lxp = %d\n", symbol_lxp);return 0;}static void hello2_exit(void){printk(KERN_ALERT "Goodbye2, cruel world!\n");}module_init(hello2_init);module_exit(hello2_exit);


运行结果:

在hello2.ko中可以使用hello.ko中导出的变量:

[root@(none)/mnt]#insmod  hello.ko Hello, World![root@(none)/mnt]#insmod hello2.ko Hello2, World!symbol_lxp defined in hello.ko: symbol_lxp = 123


读书人网 >其他相关

热点推荐