【发布时间】:2017-05-16 05:00:11
【问题描述】:
我创建了一个内核模块。在模块中,我定义了一些函数,比如function1(int n) 和function2()。
编译和插入模块没有错误。我不明白的是如何从用户空间程序中调用function1(n) 和function2()。
【问题讨论】:
标签: linux-kernel linux-device-driver
我创建了一个内核模块。在模块中,我定义了一些函数,比如function1(int n) 和function2()。
编译和插入模块没有错误。我不明白的是如何从用户空间程序中调用function1(n) 和function2()。
【问题讨论】:
标签: linux-kernel linux-device-driver
我认为没有直接的方法可以做到这一点,您不能像使用库那样将用户空间代码与内核链接。首先,您必须将您的函数注册为 syscall,然后使用 syscall() 函数调用 syscall。
见here
还可以使用套接字通信在内核和用户空间之间建立一些接口,请参阅 这个link
并在页面右侧找到与该主题相关的完整链接。
您可以让驱动程序对 /dev/file 文件或 /proc/file 文件的写入做出反应。
编辑
表单名称文件我的意思是设备是内核中的文件,您可以通过ioctl() 访问
很好的解释是http://tldp.org/LDP/lkmpg/2.6/html/lkmpg.html#AEN885
见Link
【讨论】: