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

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

应用程序在编译连接过程中,总会有UNDEFINED   REFERENCE.

------解决方案--------------------
ioctl
------解决方案--------------------
用户态调用内核态的函数,通常需要在内核模块中虚拟出一个设备,通过访问/dev下的虚拟设备节点,open,read调用内核态函数。

不过,如果你只是为了得到用户态的某个参数,可以通过

unsigned long copy_to_user(void __user *to,const void *from,unsigned long count);
unsigned long copy_from_user(void *to,const void __user *from,unsigned long count);

这两个函数可以实现用户态和内核态数据之间的转变。

具体参看LDD3 3.7节
------解决方案--------------------
添加一个系统调用....应该是一个不错的选择...
------解决方案--------------------
syscall