你可以尝试打电话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 */
Run Code Online (Sandbox Code Playgroud)