open(/dev/ietctl, O_RDWR)
这是文件I/O的常用函数,open函数,open函数用来打开一个设备,他返回的是一个整型变量,如果这个值等于-1,说明打开文件出现错误,如果为大于0的值,那么这个值代表的就是文件描述符。一般的写法是if((fd=open("/dev/ttys0",O_RDWR | O_NOCTTY | O_NDELAY)<0){
perror("open");
}
这个事常用的一种用法fd是设备描述符,linux在操作硬件设备时,屏蔽了硬件的基本细节,只把硬件当做文件来进行操作,而所有的操作都是以open函数来开始,它用来获取fd,然后后期的其他操作全部控制fd来完成对硬件设备的实际操作。你要打开的/dev/ttyS0,代表的是串口1,也就是常说的com1,后面跟的是一些控制字。int open(const char *pathname, int oflag, …/*, mode_t mode * / ) ;这个就是open函数的公式。控制字可以有多种,我现在给你列出来:
O_RDONLY 只读打开。
O_WRONLY 只写打开。
O_RDWR 读、写打开。
O_APPEND 每次写时都加到文件的尾端。
O_CREAT 若此文件不存在则创建它。使用此选择项时,需同时说明第三个参数mode,用其说明该新文件的存取许可权位。
O_EXCL 如果同时指定了O_CREAT,而文件已经存在,则出错。这可测试一个文件是否存在,如果不存在则创建此文件成为一个原子操作。
O_TRUNC 如果此文件存在,而且为只读或只写成功打开,则将其长度截短为0。
O_NOCTTY 如果p a t h n a m e指的是终端设备,则不将此设备分配作为此进程的控制终端。
O_NONBLOCK 如果p a t h n a m e指的是一个F I F O、一个块特殊文件或一个字符特殊文件,则此选择项为此文件的本次打开操作和后续的I / O操作设置非阻塞方式。
O_SYNC 使每次w r i t e都等到物理I / O操作完成。
这些控制字都是通过“或”符号分开(|)
当调用系统调用open时,操作系统会将文件系统对应设备文件的inode中的file_operations安装进用户进程的task_struct中的file_struct,然后再调用具体文件的file_operations中的open函数,其他的read、write等等也是如此,所以实际上open操作实际上是一个连接过程,我个人认为称其为open容易误导。至于file_operations中的针对底层硬件的操作,简单地说实际上就是对具体硬件接口的控制/状态寄存器和数据寄存器的读写,如硬盘这种硬件有其自己的控制器,所以他自己内部会定期处理寄存器的命令和数据,完成相应的操作请求,请求完成后cpu发中断

linux硬件设备操作函数 open(/dev/ietctl, O_RDWR|...)相关推荐

  1. linux硬件设备操作函数 open

    今天在写文件操作,需要使用open函数,功能是在文件后面追加写内容,当时写代码验证时总是没有追加写内容,发现其中文件操作的mode没写对,导致该问题 这是文件I/O的常用函数,open函数,open函 ...

  2. linux ioctl 设备操作函数 r3到r0 应用层 驱动层 通讯

    一.ioctl的简介: 虽然在文件操作结构体"struct file_operations"中有很多对应的设备操作函数,但是有些命令是实在找不到对应的操作函数.如CD-ROM的驱动 ...

  3. open(/dev/ietctl, O_RDWR) 参数含义

    2019独角兽企业重金招聘Python工程师标准>>> 这是文件I/O的常用函数,open函数,open函数用来打开一个设备,他返回的是一个整型变量,如果这个值等于-1,说明打开文件 ...

  4. linux驱动程序ioctl函数用法

    一. 什么是ioctl     ioctl是设备驱动程序中对设备的I/O通道进行管理的函数.所谓对I/O通道进行管理,就是对设备的一些特性进行控制,例如串口的传输波特率.马达的转速等等.它的调用个数如 ...

  5. linux常用c函数(中文版)

    都是linux的c函数东西略多,用页面搜索来查找吧. << Back to man.ChinaUnix.net isalnum(测试字符是否为英文或数字) 相关函数 isalpha,isd ...

  6. 【SoC FPGA学习】五、基于虚拟地址映射的 Linux 硬件编程,在已有工程上实现按键与LED的联动

    参考教程中的以下章节: 小知识点: hps_0.h 文件是qsys生成的FPGA侧外设 0xfc00 0000~0xffff ffff一共是0xffffffff - 0xfc000000 + 1 = ...

  7. linux驱动---ioctl函数解析

    转自(39条消息) linux驱动---ioctl函数解析_那可真是太开心了的博客-CSDN博客_linux驱动ioctl 参考:ioctl,unlocked_ioctl 处理方法-阿里云开发者社区 ...

  8. linux中probe函数传递参数的寻找(下)

    点击打开链接 linux中probe函数传递参数的寻找(下) 通过追寻driver的脚步,我们有了努力的方向:只有找到spi_bus_type的填充device即可,下面该从device去打通,当两个 ...

  9. Linux系统mmap函数映射物理地址

    Linux系统mmap函数映射物理地址 代码 64位报错 代码 在某些特殊情况下,我们只是想要读取某个寄存器的值或者某个地址的值,不需要去专门写一个驱动模块来实现,可以使用mmap函数配合/dev/m ...

最新文章

  1. 3D Slicer画病灶可能产生的问题+核磁共振影像数据处理-14-3d slicer画病灶“三宗罪”|常见bug(错误)汇总
  2. Android事件流程详解
  3. ffmpeg 怎么处理udp音频_STREAM: srs 2.0release,ffmpeg实时转码udp流,出现只有音频没有视频的问题?...
  4. ZeroMQ接口函数之 :zmq_msg_init_data - 从一个指定的存储空间中初始化一个ZMQ消息对象的数据...
  5. ipad2“新瓶装老酒” 苹果创新乏力?
  6. mysql缺少函数_Sqlserver的窗口函数的精彩应用之数据差距与数据岛-答案篇
  7. PHP之星际设计模式下(转自lightsaber)
  8. 编写程序判断一个 vector<int> 容器所包含的元素是否9.20: 与一个 list<int> 容器的完全相同。
  9. 常见web攻击方式与防御方法
  10. ios学习:Xcode工具
  11. Spring JPA实现增删改查
  12. 3.7 Spark RDD编程
  13. 母机修改了文件,虚拟机复制到的可能不是预期的
  14. centos7修改命令行或图形界面启动模式
  15. 扇贝有道180926每日一句
  16. n9 android模拟器,Android软件将兼容诺基亚N9
  17. 2019年上半年工作总结
  18. HTML将广告关闭的JS代码,带关闭漂浮广告代码_漂浮广告js代码_漂浮窗口模式关闭...
  19. 一起写RPC框架(七)RPC网络模块的搭建五 Netty模块
  20. 用Python画个新冠病毒

热门文章

  1. SpringCloud-Seata分布式事务服务案例之订单Order服务搭建(Day16)
  2. Python基础复习09_面向对象特性
  3. IOTE 2019物联网嘉年华在深圆满落幕
  4. NameNode HA配置详解
  5. bal插口_调音台上的英文缩写都是什么意思 调音台上面那几个插口是什么作用...
  6. PySpark RDD操作
  7. java设计模式之策略模式应用:订单手续费计算
  8. SLI、SLO和SLA
  9. 无线通信中比bit更小的“”数据单位”码片(也叫码元 ,chip) 什么是符号速率
  10. linux禁止root用户su,Linux 禁止普通用户su到root