我正在尝试编写一个简单的设备驱动程序,以使用ioctl在用户应用程序和驱动程序之间发送和接收结构。 这是我解锁的ioctl函数-
<video id="bgvid" controls poster="https://netbramha.staging.wpengine.com/wp-content/themes/netbramha-new/images/thumbnail-video@3x.jpg">
<source src="video/careers-video.mp4" type="video/mp4">
</video>
我能够使用连续的CMD_WRITE_STRUCT命令将结构从用户应用程序成功传递到驱动程序。 但是,一旦执行CMD_READ_STRUCT,用户应用程序上的ioctl调用将返回-1,错误为“操作不允许”,但结构已成功复制到用户。 在CMD_READ之后,CMD_WRITE不再起作用,因为ioctl显示错误“无效的文件描述符”。 我究竟做错了什么?
答案 0 :(得分:0)
似乎您的代码在这里有一个简单的问题,解释如下:“但是,一旦我执行CMD_READ_STRUCT,在用户应用程序上的ioctl调用将返回-1,错误“不允许操作”,但结构已成功复制到用户。
if(ret)
{
printk("Error copy_to_user\n");
} return -1;
应该像
if(ret)
{
printk("Error copy_to_user\n");
return -1;
}
对于另一个问题,我认为您可能在应用程序中进行了一些错误检查,这将在返回-1的情况下关闭文件。只是一个疯狂的猜测。