我编写了一个具有初始化和结束功能的内核模块。我还想要一个函数,并且想随时从用户空间进程中调用它。
是否适用?如果是这样,怎么办?
我正在研究 CentOS 5.2 和自定义内核,从 linux 2.6.18 修补。
编辑:为了明确起见,我想将一个函数写入内核模块并从常规 source.c 文件中调用该函数。
答案1
制作一个可以使用文件系统的内核模块/proc
听起来可能适合您。IBMdeveloperWorks有一篇文章关于那个话题。几年前我编写了该代码,当时它就可以工作了。该文章的日期为 2006 年,似乎适用于 Linux 2.6 内核。
我可以预见到,在文件系统中使用“文件”/proc
来让模块完成其工作时,打开/读取/关闭样式的 API 可能与您想要执行的操作不匹配。您可能必须在文件上使用 open()/proc
来表示“执行 WBINVD”或类似的不明显的内容。
答案2
最简单的事情是拥有一个字符设备,并写入该设备,然后调用驱动程序的读取并在内核中字符设备的读取回调中进行处理。