日期:2014-05-16  浏览次数:20792 次

linux用户程序可以调用内核模块中的函数吗?
写了一个内核模块,需要和用户层的一个程序配合,请问用户程序中怎样可以直接用到内核模块里的一个函数?
是需要写一个自定义的系统调用吗,还有没有别的办法,求各位指点...

------解决方案--------------------
没法直接调用,一般通过系统调用接口来实现交互,如open、read、write、close、ioctl等
------解决方案--------------------
用netlink来实现内核和用户态的通信很方便
------解决方案--------------------
可以用现有的系统调用,也可以用sys接口来实现

具体用哪一个,看你的功能是符合read ioctl write?还是 一个特定的sys接口?


------解决方案--------------------
一般可以利用系统调用的方式或者利用注册一个字符设备的方式,例如在/dev/目录下注册设备文件,然后在定义ioctl接口。此外,如果你的内核代码是可见的,而且熟悉汇编的话,你可以在hmcode里添加syscall调用,这样用户程序利用asm()嵌入式汇编来调用,也是可以的。
------解决方案--------------------
open、read、write、close、ioctl应该就够了吧?你不够吗?
------解决方案--------------------
楼主,你借助sys文件系统也是一种方法啊。