付费下载
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
ioctl函数的作用背景传统的操作系统可以分成两层,用户层和内核层。内核代码处理敏感资源同时在不同应用程序中间提供了安全且可信的隔离,出于此,操作系统要阻止用户态的程序直接访问内核资源。用户空间的程序通常发出一个给内核的请求,该请求称为系统调用,它的实现代码在内核层。操作系统提供了内核访问标准外部设备的系统调用,因为大多数硬件设备只能够在内核空间内直接寻址,但是当访问非标准硬件设备这些系统调用显得不合适,有时候用户模式可能需要直接访问设备,比如,一个系统管理员可能要修改网卡的配置。现代操作系统提供了各种各样设备的支持,有一些设备可能没有被内核设计者考虑到,如此一来提供一个这样的系统调用来使用设备就变得不可能了。
为了解决这个问题,内核被设计成可扩展的,可以加入一个称为设备驱动的模块,驱动的代码允许在内核空间运行而且可以对设备直接寻址。一个Ioctl接口是一个独立的系统调用,通过它用户空间可以跟设备驱动沟通。对设备驱动的请求是一个以设备和请求号码为参数的Ioctl调用,如此内核就允许用户空间访问设备驱动进而访问设备而不需要了解具体的设备细节,同时也不需要一大堆针对不同设备的系统调用。百度百科对ioctl的介绍在计算机中,ioctl(input/outputcontrol)是一个专用于设备输入输出操作的系统调用,该调用传入一个跟设备有关的请求码,系统调用的功能完全取决于请求码。ioctl是设备驱动程序中对设备的I/O通道进行管理的函数。所谓对I/O通道进行管理,就是对设备的一些特性进行控制
ioctl函数intioctl(intfd,indcmd,…);其中fd就是用户程序打开设备时使用open函数返回的文件描述符,cmd就是用户程序对设备的控制命令,至于后面的省略号,那是一些补充参数,一般最多一个,有或没有是和cmd的意义相关的。ioctl函数的作用使用ioctl来实现控制的功能。用户程序所作的只是通过命令码(cmd)告诉驱动程序它想做什么,至于怎么解释这些命令和怎么实现这些命令,这都是驱动程序要做的事情。是内核空间与用户空间通信的一种方式,用户程序可以通过调用ioctl函数来实现将一个cmd传给内核,而内核驱动根据switchcase来实现预先设定好cmd对应执行的相关程序。ioctl是设备驱动程序中设备控制接口函数,一个字符设备驱动通常会实现设备打开、关闭、读、写等功能,在一些需要细分的情境下,如果需要扩展新的功能,通常以增设ioctl()命令的方式实现。ioctl参数cmd的构成设备类型序列号方向数据尺寸8bit8bit2bit8~14bit--------------------------------dir(direction),ioctl命令访问模式(数据传输方向),占据2bit,可以为_IOC_NONE、_IOC_READ、_IOC_WRITE、_IOC_READ|_IOC_WRITE,分别指示了四种访问模式:无数据、读数据、写数据、读写数据;type(devicetype),设备类型,占据8bit,在一些文献中翻译为“幻数”或者“魔数”,可以为任意char型字符,例如‘a’、’b’、’c’等等,其主要作用是使ioctl命令有唯一的设备标识;nr(number),命令编号/序数,占据8bit,可以为任意unsignedchar型数据,取值范围0~255,如果定义了多个ioctl命令,通常从0开始编号递增;size,涉及到ioctl函数第三个参数arg,占据13bit或者14bit(体系相关,arm架构一般为14位),指定了arg的数据类型及长度,如果在驱动的ioctl实现中不检查,通常可以忽略该参数;参数说明cmd参数在用户程序端由一些宏根据设备类型、序列号、传送方向、数据尺寸等生成,这个整数通过系统调用传递到内核中的驱动程序,再由驱动程序使用解码宏从这个整数中得到设备的类型、序列号、传送方向、数据尺寸等信息,然后通过switch{case}结构进行相应的操作。这样一来,一个命令就变成了一个整数形式的命令码;但是命令码非常的不直观,所以LinuxKernel中提供了一些宏。这些宏可根据便于理解的字符串生成命令码,或者是从命令码得到一些用户可以理解的字符串以标明这个命令对应的设备类型、设备序列号、数据传送方向和数据传输尺寸。ioctl理解ioctl其实没有什么很难的东西需要理解,关键是理解cmd命令码是怎么在用户程序里生成并在驱动程序里解析的,程序员最主要的工作量在switch{case}结构中,因为对设备的I/O控制都是通过这一部分的代码实现的。把ioctl当做特殊的read,write,当你用read,write不能完成某一功能时,就用考虑使用ioctl一些没办法归类的函数就统一放在ioctl
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 中学行风评议整改措施总结
- 2026呼吸内科疾病护理查房要点解读
- 2026年醇基燃料行业分析报告及未来发展趋势报告
- 2026年家用电器礼品行业分析报告及未来发展趋势报告
- 2026年硫酸沙丁胺醇片行业分析报告及未来发展趋势报告
- 2026年期刊广告行业分析报告及未来发展趋势报告
- 2026年防冻剂行业分析报告及未来发展趋势报告
- 第15课 开始全面建设小康社会 课件
- 2026年四丙氟橡胶行业分析报告及未来发展趋势报告
- 2026年外周血管介入医疗器械行业分析报告及未来发展趋势报告
- 九师联盟2026届高三年级下学期4月测试英语试卷
- 新高考浪潮下生物学教学中学习共同体的构建与实践探索
- 2024年高考化学试卷(重庆)
- 2026年广东佛山市高三二模高考物理模拟试卷试题(含答案详解)
- 2026年中国化工经济技术发展中心招聘备考题库及1套参考答案详解
- 特种设备数据分析师面试题及答案解析
- 化工事故应急处理培训
- 魏晋南北朝书法艺术
- 2025年纪检监察笔试题及答案
- 备战2026年高考地理考试易错题(新高考)人文地理选择题50题专练(原卷版)
- 慢病防治课题申报书模板
评论
0/150
提交评论