如何在 Linux 内核空间使用 ioctl()?

2024-05-02

可以打电话吗ioctl来自 Linux 内核模块? 谁能提供一个如何使用它的例子吗?


您可以尝试拨打电话sys_ioctl.
如果内核是用以下命令编译的,则它会被导出CONFIG_COMPAT.

或者,如果您有设备驱动程序struct file_operations,你可以调用它的ioctl直接处理。

然而,ioctl 句柄期望指针参数位于当前运行进程的地址空间中,而不是位于内核地址空间中。copy_from_user将用于阅读它们。如果你给出指向内核地址空间的指针,copy_from_user将失败。我不知道你会如何解决这个问题。

Edit:

如果您将在下面的代码之间调用 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 */
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 Linux 内核空间使用 ioctl()? 的相关文章

随机推荐