Linux用户程序向内核传递数据
时间:2006-11-08 来源:Elite
内核和用户空间传递数据主要是用get_user(ptr)和put_user(datum,ptr)例程。
用户程序主动发起信息交互
编写自己的系统调用
编写驱动程序
使用proc文件系统。除了读取内核信息,proc文件系统还提供了写入功能。
使用虚拟文件系统。
使用内存映像。把内核中特定部分的内存空间映射到用户级程序的内存空间去。应用在那些内核和用户空间需要快速大量交互数据的情况下,特别是那些对实时性要求较强的应用。
从内核空间调用用户程序。通过execve()。在系统调用的具体实现代码中要检查参数合法性,该检查要求所有的参数必须位于用户空间。为了解决这个问题,我们可以利用set_fs宏来修改检查策略,使得允许参数地址为内核地址。
利用brk系统调用导出内核数据
http://www-128.ibm.com/developerworks/cn/linux/l-kerns-usrs/
用户程序主动发起信息交互
编写自己的系统调用
编写驱动程序
使用proc文件系统。除了读取内核信息,proc文件系统还提供了写入功能。
使用虚拟文件系统。
使用内存映像。把内核中特定部分的内存空间映射到用户级程序的内存空间去。应用在那些内核和用户空间需要快速大量交互数据的情况下,特别是那些对实时性要求较强的应用。
从内核空间调用用户程序。通过execve()。在系统调用的具体实现代码中要检查参数合法性,该检查要求所有的参数必须位于用户空间。为了解决这个问题,我们可以利用set_fs宏来修改检查策略,使得允许参数地址为内核地址。
利用brk系统调用导出内核数据
http://www-128.ibm.com/developerworks/cn/linux/l-kerns-usrs/
相关阅读 更多 +