在一些困惑中,我需要调用一个不应该从内核空间调用的内核函数,因为在参数中它需要从分配的用户空间中获取缓冲区。
const char __user *buf
但我需要调用它,这样我才能分配用户空间缓冲区并使用该函数参数传递它。
如果可能的话,我需要在没有任何用户空间交互的情况下进行。 真的可能吗?
我的目标是从接受参数的内核驱动程序调用内核例程 const char __user *buf
最佳答案
可能还有另一种方法,具体取决于您实际尝试调用的系统调用。
这是一个 article这解释了一些关于系统调用机制的内容。有一节解释了如何从内核空间调用系统调用,使用内核内存并避免验证。
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 - 如何在内核驱动程序中分配用户空间缓冲区?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16330592/