gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-29 17:23:04 25 4
gpt4 key购买 nike

是否可以从 Linux 内核模块调用 ioctl?任何人都可以提供一个如何使用它的例子吗?

最佳答案

您可以尝试调用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 */

关于c - 如何在 Linux 内核空间使用 ioctl()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11121319/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com