我正在编写一个内核模块(在 Linux 2.6.32 上),以获取disk_stats
正在使用的所有磁盘(不是分区)。换句话说,我获取的数据与/sys/block/sda/stat
显示的数据一样,但在内核模块中。
(注意:通过“不分区”,我的意思是我们只是处理sda
和忽略sda1/sda2/etc
。)
有没有类似for_each_netdev
或for_each_possible_cpu
的块设备?因为可能有多个磁盘,我需要一种方法来遍历它们。或者最晚,我如何才能获得与块设备名称相关的数据结构(如sda
)?
disk_stats
我知道我们可以从磁盘中获取磁盘hd_struct
,但是我怎样才能获取它呢hd_struct
?
我读过linux2.6.32/block/genhd.c,知道file的内容/sys/block/sda/stat
是由生成的diskstats_show
,但是第二个参数是怎么来的呢?
请帮助我。谢谢。