【发布时间】:2014-02-17 11:33:39
【问题描述】:
我想将一个整数变量从用户空间复制到内核空间。 谁能给我一个简单的例子如何做到这一点? 我开始知道我们可以使用 get_user 但我不知道如何..
【问题讨论】:
-
IOCTL 是一种在用户和内核空间之间传输数据的方法。
标签: linux-kernel linux-device-driver
我想将一个整数变量从用户空间复制到内核空间。 谁能给我一个简单的例子如何做到这一点? 我开始知道我们可以使用 get_user 但我不知道如何..
【问题讨论】:
标签: linux-kernel linux-device-driver
检查man 和copy_to_user 和copy_from_user 的页面。
编写一个简单的内核模块,带有read/write 操作,并为它们注册和字符设备,例如/dev/sample。
在此应用程序打开的fd 上执行应用程序write/read。
现在您需要实现将这些数据传输到内核空间并读回返回的任何内容的机制。
- 在write 中,您执行copy_from_user,在此检查通过之前,缓冲区是否有效。
- 在read 你做一个copy_to_user。
确保处理错误条件,open 调用实现应该跟踪有多少opens,如果你想实现多个打开,并且这个计数应该减少,当应用程序调用close on打开FD.
你关注了吗?
【讨论】: