Chinaunix首页 | 论坛 | 博客
  • 博客访问: 208165
  • 博文数量: 33
  • 博客积分: 1241
  • 博客等级: 中尉
  • 技术积分: 330
  • 用 户 组: 普通用户
  • 注册时间: 2007-01-20 16:34
个人简介

..

文章分类

全部博文(33)

文章存档

2012年(1)

2011年(8)

2010年(8)

2009年(4)

2007年(12)

我的朋友

分类: LINUX

2011-04-12 14:01:24

内核中宏EXPORT_SYMBOL:

module的KERNEL的函数调用刚好和用户态编译程序不同。

因为模块运行在内核空间,不能直接调用应用程序库,只能调用内核函数。 EXPORT_SYMBOL宏的作用就是把内核函数的符号导出。符号的意思就是函数的 入口地址。

module不需要也不可能在连接时候resolve all the requested symbols。而是在运行时 到KERNEL中去找(由KERNEL中的函数loadmodule()中的_findsymbol 做)。 KERNEL中有 一个符号表,就是EXPORTSYMBOL的名字表。如果module 引用了一个KERNEL中的未被 EXPORT_SYMBOL的符号,就找不到。模块的加载就不成功。

如果非要这样,可以用写上绝对地址的函数指针来调用未被EXPORT_SYMBOL的函数。


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

上一篇:输出结果重定向

下一篇:bash hotkey

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