首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Linux IOCTL命令

Linux IOCTL命令
EN

Stack Overflow用户
提问于 2013-05-20 12:20:08
回答 2查看 10.5K关注 0票数 0

正在尝试实现IOCTL命令,遇到如下情况:

如果_IO同时用于读取和写入

那么为什么我应该考虑_IOR_IOW呢?

有什么线索吗?

EN

回答 2

Stack Overflow用户

发布于 2013-05-20 14:50:25

实际上,_IO是为根本不带任何参数的ioctls准备的。例如,假设您想要触发一个先前在驱动程序中设置的命令,您可能根本不需要传递任何数据!

_IOWR用于传入和传出参数的ioctls。在我的经验中,这种情况很少见,而且可能会让人感到困惑,因为一个参数用于两个非常不同的目的,但当您需要它时,它可能会很有用。

查看http://www.mjmwired.net/kernel/Documentation/ioctl-number.txt的开头部分

内核中没有强制执行方向的任何内容,因此它主要用于文档目的。

票数 3
EN

Stack Overflow用户

发布于 2013-05-22 10:31:14

_IOR -用于从设备到用户空间应用程序的读取,_IOW -写入从用户空间应用程序到设备(硬件)的数据,以及_IOWR -用于从/向设备读取/写入数据。但_IO -主要用于向目标设备发送设备可配置命令,例如,如果您想要读/写闪存,则需要首先发送命令,然后从/向闪存读取/写入数据。由于读/写命令是闪存数据表中规定的常量/固定命令,因此不需要显式地从用户空间app向驱动程序ioctl发送/传递命令,因此您可以在_IO ioctl情况下根据需要形成命令包并将其发送到闪存。_IO -告诉你不必从用户空间应用程序中传递数据(命令),你在驱动程序中已经使用了硬编码的读/写命令并将命令发送到目标设备。_IOR或_IOW或_IOWR用于读取/写入从用户空间应用程序到/从设备(例如:闪存)传递的易失性数据。希望这个答案能澄清你的疑问:-)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16642552

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档