在用户空间从程序调用内核模块function

我开发了一个内核模块和一些function。 现在我需要在用户空间中开发一个程序,并调用内核模块中的一些函数。

我还需要在用户空间访问我的程序的内核模块中的一些全局variables。

Solutions Collecting From Web of "在用户空间从程序调用内核模块function"

有关Linux核心模块和用户空间程序交互的完整概述http://wiki.tldp.org/kernel_user_space_howto核心空间,用户空间接口 ”由Ariane Keller(从2008-09-28开始,但约2.6内核;只有重要的新方法是relayfs )

没有列出从用户空间到内核空间的普通函数调用,只有系统调用(添加新的系统调用不容易)和上调(反向调用)。

最简单的界面之一是ioctl; 但在创建procfs,sysfs或类似的文件之前,您无法开始使用ioctl。

其他是sysctl; 但是sysctl更有资格读/写全局变量。 (通过sysctl接口很难传递多个参数)。

你似乎错过了内核和用户空间的分离点。 如果你的用户程序可以直接修改内核中的数据,那很快就会导致灾难。

用户程序只有一个传统的方式来明确地从内核请求服务 – make a system call

还有一些陷阱和一些特定于Linux的用户空间 – 内核通信机制,但这些在这里并不相关。

正如其他海报所提到的,内核和用户空间有明显的区别。 所以不可以直接从用户空间调用内核函数。 我认为在用户空间和内核空间之间发送消息最简单的方法是通过netlink套接字。 netlink套接字允许您轻松地在用户级别和内核级别之间传递任意的数据结构。

是ioctl,系统调用是可行的选择,它们不像netlink套接字那样灵活,以传递任意信息。

示例代码在这里: http : //people.ee.ethz.ch/~arkeller/linux/multi/kernel_user_space_howto-3.html

你将需要安装一个新的内核来使用新的调用,除非你已经有一些机制来更新内核… http://www.cyberciti.biz/tips/how-to-patch-running-linux -kernel.html