linux 内核export_symbol变量,关于内核中 EXPORT_SYMBOL 导出变量的范例

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

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

EXPORT_SYMBOL();

EXPORT_SYMBOL_GPL();

实例:

hello.c:

/***********************************************************************

@

@ 函数名: hello.c

@ 功能: 模块1,生成hello.ko,在这里定义了变量symbol_lxp

@ 并用EXPORT_SYMBOL 将该变量导出

@ 作者: xiangpingli

@ 日期: 2012-08-28

@

************************************************************************/

#include

#include

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

#include

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值