在linux驱动程序中的struct文件

在linux驱动程序中的struct文件,第1张

概述我正在学习如何编写 Linux设备驱动程序,并且我无法理解“struct file”.我正在使用Linux设备驱动程序第3版来帮助我. 这是我的理解 一个.结构文件表示一个打开的文件,因此当在设备驱动程序模块中调用open时,内核将创建一个包含与设备驱动程序相关的一切的结构文件. 湾如果要传递设备驱动程序的这个实例,那么必须将一个指针传递给open()后由内核创建的特定结构文件, C. file- 我正在学习如何编写 Linux设备驱动程序,并且我无法理解“struct file”.我正在使用linux设备驱动程序第3版来帮助我.

这是我的理解

一个.结构文件表示一个打开的文件,因此当在设备驱动程序模块中调用open时,内核将创建一个包含与设备驱动程序相关的一切的结构文件.

湾如果要传递设备驱动程序的这个实例,那么必须将一个指针传递给open()后由内核创建的特定结构文件,

C. file-> private_data将始终返回指向设备的指针.

与此相关的另一个问题是“f_pos”字段.该书说,如果想知道文件中的当前位置,驱动程序可以读取此值.这是我从中了解的.

天.如果struct foo_dev,并且如果此驱动程序用于存储数据的内存总量为X,则f_pos指向由驱动程序保留的内存块中的当前位置.

我理解的是多少是正确的,请纠正我错在哪里.

谢谢,
米尔

解决方法 该结构文件由内核创建并表示内核对您的设备的视图.它允许内核将文件句柄映射到设备.

结构文件只包含内核上层需要的数据,这不太可能是驱动程序需要的一切,如果需要额外的存储来跟踪设备的状态(通常你会),那么你需要为结构在打开的功能或更正常当您检测到您的硬件.

如果您分配存储空间,那么您可以使用文件> private_data来获取通过读/写/ etc传递给您的驱动程序的结构文件到您的结构.

如何使用file-> private_data取决于驱动程序,内核不会触摸它.它刚刚在那里为司机使用.

并保存指向由设备执行各种 *** 作的驱动程序定义的函数的指针.结构的每个字段对应于由驱动程序定义以处理请求的 *** 作的某些功能的地址

f_pos字段是内核使用与设备和文件相同的结构文件的遗产.它具有指向由设备执行各种 *** 作的驱动程序定义的函数的指针.结构的每个字段对应于由驱动程序定义以处理请求的 *** 作的某些功能的地址.这些 *** 作取决于您的设备,如果您的设备支持某种形式的随机访问(例如ram设备),则使用f_pos并实现lseek可能会有意义,如果硬件是顺序的,则f_pos通常是无关紧要的.

总结

以上是内存溢出为你收集整理的在linux驱动程序中的struct文件全部内容,希望文章能够帮你解决在linux驱动程序中的struct文件所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/1049235.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-25
下一篇 2022-05-25

发表评论

登录后才能评论

评论列表(0条)

保存