设备驱动程序节点特定的私有数

时间:2016-11-01 18:03:14

标签: linux-kernel linux-device-driver device-driver mknod

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

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

open()次来电之间是否存在类似的内容?

1 个答案:

答案 0 :(得分:1)

你的问题的答案是“不”(有点),但你误解了cent <- rnorm(n=20, mean=5, sd=1) num <- c(1:20) groups2 <- c(rep("DSM Symptoms",9),rep("Non-DSM Symptoms",11)) data2 <- data.frame(num, cent, groups2) ggplot(data2, aes(x=num, y=cent, fill=groups2, colour=groups2)) + geom_line(color='#666666', size=0.7) + geom_point() + ylab('Strength Centrality') + xlab ('Symptoms') + scale_x_reverse() + scale_x_continuous(breaks = c(1:20)) + coord_flip() + theme_bw() + theme(panel.grid.minor.y = element_blank()) 的用法。您可以在file->private_data文件操作处理程序中设置它,以便您的其他文件操作处理程序函数可以在以后使用它。您的open文件操作处理程序可以使用open中的设备编号来决定打开哪些硬件设备,并将inode->i_rdev设置为指向该设备的专用数据结构。 / p>

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

我的第一段中的“(类型)”是因为驱动程序看到inode->i_rdev值的范围是持久的,直到它取消注册它们(然后它将不再显示他们!)。