免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2152 | 回复: 8
打印 上一主题 下一主题

如何使用MODULE导出的涵数呢? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-03-20 21:29 |只看该作者 |倒序浏览
如下代码:
#include<linux/init.h>
#include<linux/module.h>
MODULE_LICENSE("Dual BSD/GPL");
static int hello_init(void)
{printk(KERN_ALERT " Hello world enter\n");
return 0;
}
static void hello_exit(void)
{
printk(KERN_ALERT "Hello world exit\n");
}
int add(int a,int b)
{return a+b;}
EXPORT_SYMBOL(add);
module_init(hello_init);
module_exit(hello_exit);
MODULE_AUTHOR("He Lun");
MODULE_DESCRIPTION(" A simple Hello World Module");
MODULE_ALIAS("a simplest module");
若想使用这个模块导出的ADD涵数应如何做呢?
#include<stdio.h>
int main()
{

printf("%d\n",add(1,2));
return 0;
}
这样系统会提示找不到ADD这个符号,小弟刚入门请高手指点。

论坛徽章:
0
2 [报告]
发表于 2009-03-20 23:44 |只看该作者
EXPORT_SYMBOL导出的符号是导出给其他内核模块使用的,不是导出给用户程序使用的。
要给用户程序使用,就得添加系统调用~

论坛徽章:
3
金牛座
日期:2014-06-14 22:04:062015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:49:45
3 [报告]
发表于 2009-03-20 23:58 |只看该作者

回复 #1 helun 的帖子

写个头文件,引用的时候包含这个头文件

论坛徽章:
0
4 [报告]
发表于 2009-03-21 17:25 |只看该作者
二楼回答得不错,但是真的就不能给用户空间使用吗?三楼可以举个例子吗?谢谢

论坛徽章:
3
金牛座
日期:2014-06-14 22:04:062015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:49:45
5 [报告]
发表于 2009-03-21 18:15 |只看该作者

回复 #4 helun 的帖子

没办法给用户空间用,我以为你给其他模块用。
除非系统调用,或者驱动程序的方式,在内核间接调用

论坛徽章:
0
6 [报告]
发表于 2009-03-21 19:03 |只看该作者
写个字符设备间接调用好了~

论坛徽章:
0
7 [报告]
发表于 2009-03-23 00:09 |只看该作者
使用ioctl就可以调用到内核的函数。
还有很多内核与用户空间通信的方式,
最简单的就是proc。

论坛徽章:
0
8 [报告]
发表于 2009-03-23 10:40 |只看该作者
linux不是uC/OS

论坛徽章:
0
9 [报告]
发表于 2009-03-24 14:23 |只看该作者
谢谢emmoblin ,用ioctl可以明白,但是如何使用/proc,可以举个例子吗
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP