首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >设备驱动节点专用私有数据

设备驱动节点专用私有数据
EN

Stack Overflow用户
提问于 2016-11-01 18:03:13
回答 1查看 1.7K关注 0票数 0

我希望存储每个节点(/dev/foo[1-99])的特定数据,因为我希望将每个节点映射到特定的HW。

我开始使用file->private_data,但每次打开的调用都将其设置为NULL

是否有类似的东西可以在open()调用之间持久存在?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-11-01 19:36:10

您的问题的答案是"No“(某种程度上),但是您误解了file->private_data的用法。您可以在open文件操作处理程序中设置它,以便其他文件操作处理程序函数以后可以使用它。您的open文件操作处理程序可以使用inode->i_rdev中的设备号来决定打开哪个硬件设备,并将file->private_data设置为指向该设备的私有数据结构。

请注意,inode->i_rdev是“主”和“次要”设备编号的组合。您可以使用MAJOR(inode->i_rdev)imajor(inode)提取主要部分,也可以使用MINOR(inode->i_rdev)iminor(inode)提取次要部分。根据您注册设备的方式,这种大/小的拆分可能对您有用,也可能没有用处。在任何情况下,您的驱动程序都会注册一个设备编号的范围,并且inode->i_rdev值将在该范围内。

在我的第一段中,“(某种程度)”是因为您的驱动程序看到的inode->i_rdev值的范围是持久的,直到它注销它们(然后它将不再看到它们!)。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40365910

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档