简要说明linux设备驱动程序中常用的ioctl方法和read/write方法的异同点

author author     2023-03-18     538

关键词:

参考技术A ioctl是iocontrol的缩写,就是IO控制。
行为上:
简单来说,如果你在写驱动程序时候,碰到一些IO操作,在逻辑上不能归类到read,不能归类到write,那就可以认为是ioctl的部分。
read和write应该是写入和读出数据的,应该是作为单纯的数据交换的方式来处理。而ioctl则是控制read和write一些选项的。比如:你做了一个通用的读写IO端口的驱动模块。read和write是从端口读写数据的,但是更改读写的端口,这个操作应该如何处理呢?显然用ioctl来实现比较合理。比如你的read和write是可以阻塞的,或者不能阻塞的,或者对设备文件的读写是可以并发的,或者是不可以并发的,这些都可以写成可以用ioctl来配置的情况。后面为了可以用ioctl来实现模块不同的IO特点。
参数上,ioctl的一般参数格式就是命令字(常量)+命令参数的方式。
read和write的参数格式都是数据缓冲区+数据目的地指针+长度。本回答被提问者采纳

Linux 设备驱动程序原子 GET 然后通过 ioctl 设置

】Linux设备驱动程序原子GET然后通过ioctl设置【英文标题】:LinuxdevicedriveratomicGETthenSETviaioctl【发布时间】:2014-02-2612:46:22【问题描述】:我想通过ioctl从设备驱动程序读取结构,更改用户空间结构中的值,然后将其写回。这是否... 查看详情

linux下的ioctl()函数详解

我这里说的ioctl函数是指驱动程序里的,因为我不知道还有没有别的场合用到了它,所以就规定了我们讨论的范围。写这篇文章是因为我前一阵子被ioctl给搞混了,这几天才弄明白它,于是在这里清理一下头脑。一、什么是ioctl&nb... 查看详情

linux中ioctl函数集的目的是啥?

...描述】:在Linux/freeBSD内核中,每当我们必须为设备制作驱动程序模块时,我们都会在/dev/文件夹中制作一个文件并使用它与其他进程通信。如果是这样,ioctl函数集的目的是什么?无论我们 查看详情

linux网络常用头文件说明

sys/types.h:数据类型定义sys/socket.h:提供socket函数及数据结构netinet/in.h:定义数据结构sockaddr_inarpa/inet.h:提供IP地址转换函数netdb.h:提供设置及获取域名的函数sys/ioctl.h:提供对I/O控制的函数sys/poll.h:提供socket等待测试机制的函... 查看详情

linux——linux驱动之使用ioctl接口进行设备参数设置应用实践(ioctl接口命令规则代码实现)

【系列专栏】:博主结合工作实践输出的,解决实际问题的专栏,朋友们看过来!《QT开发实战》《嵌入式通用开发实战》《 查看详情

23v4l2应用编写及各个ioctl涉及结构体说明

常用的结构体在内核目录include/linux/videodev2.h中定义structv4l2_requestbuffers //申请帧缓冲,对应命令VIDIOC_REQBUFSstructv4l2_capability     //视频设备的功能,对应命令VIDIOC_QUERYCAPstructv4l2_input &n 查看详情

linux驱动开发-字符设备控制技术笔记3(代码片段)

...intioctl(intfd,unsignedlongcmd,...);但是在Linux2.6.36之后的/*c)参数说明fiel:打开的设备描述符cmd:传递的命令arg:命令的个数*/long(*unlocked_ioctl)(structfile*file,unsignedintcmd,unsignedlongarg);long(*compat_ioctl)(structfile*file,unsignedintcmd,unsignedlongarg);d)注意... 查看详情

vxworks - ioctl(SIOCGIFCONF) 错误

...,但在.a库中使用时会出现以下错误。ENXIO即“未找到此驱动程序或设备”。【问题讨论】:【参考方 查看详情

为啥 IOCTL 命令号在整个系统中应该是唯一的?

...】:我阅读了选择ioctl命令的说明(来自O\'Reillylinux设备驱动程序):Theioctlcommandnumbersshouldbeuniqueacro 查看详情

ioctl 与 Linux 中的内核模块

...您可以在Linux内核中添加新的systemcalls,并使用它与其他设备进行通信。我还读到ioctl是linux中用来实现系统调用的系统调用,默认情况下在内核中是不可用的。我的问题是,你为什么不直接为你的设备写一个新的 查看详情

如何在 Linux 设备驱动程序中设置 errno?

】如何在Linux设备驱动程序中设置errno?【英文标题】:HowtoseterrnoinLinuxdevicedriver?【发布时间】:2014-08-2509:31:26【问题描述】:我正在设计一个Linux字符设备驱动程序。我想在ioctl()系统调用中发生错误时设置errno。longmy_own_ioctl(stru... 查看详情

linux用户与内核空间交互—ioctl(代码片段)

...适合场景仅仅内核,旧内核使用,避免驱动使用设备驱动为生产与调试目的的驱动接口多种接口(设备、驱动、网络、udev系统)设备驱动接口可见性可见;用户权限控制访问可见;用户权限控制访问可见&#... 查看详情

121.请简要说明linux操作系统下你所了解的文件存储方案

请简要说明linux操作系统下你所了解的文件存储方案RPM包安装如何解决依赖性关系Linux系统下有几种安装方式及卸载方式你了解linux内核调优吗?请介绍下调优的原则及相关参数当linux操作系统中没有/etc/sysconfig/iptables文件时,如... 查看详情

块设备驱动程序 - 了解收到的 ioctl

】块设备驱动程序-了解收到的ioctl【英文标题】:Blockdevicedriver-Understandingreceivedioctl【发布时间】:2018-05-0215:43:00【问题描述】:我刚刚实现了一个虚拟块设备,在使用它时,我看到了与ioctls相关的奇怪行为。我的设备只是一个... 查看详情

具有多个读取操作、ioctl 或 fops 的 Linux USB 驱动程序?

】具有多个读取操作、ioctl或fops的LinuxUSB驱动程序?【英文标题】:LinuxUSBdriverwithmultiplereadoperations,ioctlorfops?【发布时间】:2014-03-1223:26:07【问题描述】:我正在为具有三种不同读/写操作(闪存、EEPROM和I2C)的USB设备编写驱动程... 查看详情

设备映射器的“ioctl”签名

...问题描述】:这个问题可能看起来很幼稚,但我是内核/驱动程序编程的新手。我在块设备上创建了一个设备映射器,它工作正常。它的构造函数/析构函数和映射方法被调用。现在,我正在尝试为这个映射器编写一个ioctl。为设... 查看详情

linux中lspci命令的作用是啥?

...中所有PCI总线设备或连接到该总线上的所有设备的工具。简要说明命令用法:lspci(选项)选项-n:以数字方式显示PCI厂商和设备代码;-t:以树状结构显示PCI设备的层次关系,包括所有的总线、桥、设备以及它们之间的联接;-b:... 查看详情

Linux ioctl 返回值由谁解释?

...2015-08-2115:01:34【问题描述】:我正在使用自定义内核字符设备,该设备有时会为其ioctl()返回较大的负值(大约为数千,例如-2000)。在用户空间中,我没有从ioctl调用返回这些值。相反,我从内核模块(+2000)中将errno设置为取反值... 查看详情