将block_device映射到设备struct
问题描述:
在linux内核中如何映射block_device
到device
struct?换句话说,如果我们有一个block_device
结构我们怎样才能得到相应的device
结构?...将block_device映射到设备struct
答
看来,对我来说最短的路是找到bdev_map
指针并执行kobj_lookup(bdev_map, inode->i_rdev, &dummy)
操作。这返回一个kobject
,它对应于块设备(i_rdev
)。
答
最短的方式似乎是block_device->bd_disk->driverfs_dev
。
也有可能是block_device->bd_inode_backing_dev_info->dev
是既bd_disk和bd_inode_backing_dev_info成员可以从那里您尝试访问它们和您的通话kobj_lookup还提供了一个映射,这取决于为null,虽然按要求,而不是通过现有的结构层次结构。
谢谢,这似乎是一件容易的事。接下来的问题是'bd_disk'是NULL。我有一个块设备文件的inode,并使用bdget来获取指向'block_device'结构体的指针。指针是有效的,但'bd_disk'不是:( – 2012-02-14 06:53:10
'block_device-> backing_dev_info-> device'没有这样的链路 – 2012-02-16 11:23:48
道歉意外地指定了类型而不是字段名称 – Appleman1234 2012-02-16 11:31:39