Hi,欢迎来到中国优发娱乐手机版高端品牌 - 华清远见嵌入式学院<北京总部官网>,专注嵌入式工程师培养13年!
  • 全国咨询热线:400-611-6270
  • 新浪微博
  • 微信
  • 北京
    校区
  • 上海
    校区
  • 深圳
    校区
  • 成都
    校区
  • 南京
    校区
  • 武汉
    校区
  • 西安
    校区
  • 广州
    校区
  • 沈阳
    校区
  • 济南
    校区
  • 重庆
    校区
  • 长沙
    校区
  • 研发
    中心
  • 当前位置: > 嵌入式学院 > 嵌入式学习 > 讲师博文 > Linux字符设备驱动模型之操作函数集
    Linux字符设备驱动模型之操作函数集
    时间:2017-04-25作者:华清远见
    在上一篇文章中提到,在Linux用户空间中,操作硬件设备是通过操作文件的方式进行。那么其所包含的操作方式无法就是打开文件(open)、写数据到文件(write)、从文件读数据(read)等等。   一、struct file_operations操作函数集 struct file_operations结构对于Linux设备驱动的开发尤其重要,它为Linux内核驱动和用户空间应用程序的操作接口提供映射机制,使得用户空间的操作函数可以在内核空间找到相对应的映射函数,从而实现内核空间与用户空间的数据交互。   字符设备驱动相关的结构struct cdev的成员包含了struct file_operations操作函数集,其所代表的是为字符设备驱动提供操作方法框架,以能够实现与用户空间的映射。其原型如下:   struct file_operations结构成员的命名存在与在用户空间的操作文件的应用程序所调用的API相似,例如llseek、read、write、open等。实际上这些操作方法与用户空间的API实现映射关系。是作为Linux内核设备驱动程序的操作方法,设备驱动为上层应用提供规定的操作方法。比如对于某些设备而言,其只受到CPU的控制,而不需要给CPU返回数据,那么在Linux内核驱动中将不需要实现read方法,即用户空间也不能使用read进行操作相应的设备节点文件。 二、struct file_operations函数集的应用 struct file_operations是一个函数指针集合,其定义了能够在设备上进行操作的函数。结构中的每一个函数指针成员均指向驱动中的函数,这些函数实现一个针对设备的操作,对于设备不支持的操作,则可以设置其对应的函数指针为NULL。例如:   此设备不支持llseek操作方式,所以其值为空;它在用户空间支持了read、write、ioctl、open、和close(对应release函数指针成员),其他用不到的成员可以不进行配置。

    发表评论
    全国咨询电话:400-611-6270,双休日及节假日请致电值班手机:15010390966 在线咨询: 曹老师QQ(3337544669), 徐老师QQ(1462495461), 刘老师 QQ(3108687497) 企业培训洽谈专线:010-82600901,院校合作洽谈专线:010-82600350,在线咨询:QQ(248856300) Copyright 2004-2017 华清远见教育集团 版权所有 ,京ICP备16055225号,京公海网安备110108001117号

    优发娱乐手机版

    百度360搜索搜狗搜索

    优发娱乐手机版

    百度360搜索搜狗搜索