是否可以ioctl
从 Linux 内核模块调用?谁能提供一个如何使用它的例子?
Someone
问问题
6479 次
1 回答
6
你可以试着打电话sys_ioctl
。
如果内核是用CONFIG_COMPAT
.
或者,如果你有设备驱动程序struct file_operations
,你可以直接调用它的ioctl
处理程序。
但是,ioctl 句柄期望指针参数位于当前正在运行的进程的地址空间中,而不是内核地址空间中。copy_from_user
将用于阅读它们。如果给内核地址空间指针,copy_from_user
就会失败。我不明白你会如何解决这个问题。
编辑:
如果您将在下面的代码之间调用 ioctl 处理程序,copy_from_user
则永远不会失败。
mm_segment_t fs;
fs = get_fs(); /* save previous value */
set_fs (get_ds()); /* use kernel limit */
/* system calls can be invoked */
set_fs(fs); /* restore before returning to user space */
于 2012-06-21T06:46:43.303 回答