如何在用户态调用内核态的函数?

fesir 2007-06-18 06:23:51
在一个module中,已经编写一组函数,并且EXPORT_SYMBOL之。但是想被一个用户态的应用程序,目的是为了让用户态把某个参数传进来。直接调用或syscall都未能作用。本人刚开始KERNEL开发,请指教。

应用程序在编译连接过程中,总会有UNDEFINED REFERENCE.
...全文
1127 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
DanXer 2007-06-27
  • 打赏
  • 举报
回复
insmod时可以作为模块参数传,运行时ioctl也可以传。
cherishhu 2007-06-27
  • 打赏
  • 举报
回复
可以用syscall来实现,但是光EXPORT_SYMBOL是不行的,要在calls.S中把你的那个函数添加进来
jacky_emdoor 2007-06-27
  • 打赏
  • 举报
回复
LZ的这种需求很正常
我通常的做法是
在内核模块中实现IOCTL,而在这个IOCTL里调用你在内核中导出的函数
在应用程序中
你调用这个IOCTL就可以了
很方便的
webycn 2007-06-25
  • 打赏
  • 举报
回复
ioctl();
OstrichFly 2007-06-22
  • 打赏
  • 举报
回复
用procfs简单
用户态程序打开/proc/file,然后往里面写控制符就可以了
wind_tuxr 2007-06-21
  • 打赏
  • 举报
回复
linux设备驱动开发群42013154
zzx4493 2007-06-18
  • 打赏
  • 举报
回复
EXPORT_SYMBOL的作用是把函数导出到内核符号表里面,从而提供给内核里面的其他文件(模块)使用。不是用来给用户态的程序调用的!这种想法就是危险的!
另外,如果说像使用自己定义的系统调用的话,可以参见lkd第五章的内容。里面说的很清楚。

其实一般情况下完全不需要通过诸如添加系统调用的方法来实现所谓的“为了让用户态把某个参数传进来”这样的功能。有太多的其他(也是常规的办法)。比如说你写个驱动模块,用procfs, etc.关键看需求。

4,468

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 内核源代码研究区
社区管理员
  • 内核源代码研究区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧