Estou escrevendo um módulo do kernel (no linux 2.6.32), para obter o disk_stats
de todos os discos (não da partição) em uso. Em outras palavras, estou obtendo os dados da mesma forma que /sys/block/sda/stat
mostra, mas no módulo do kernel.
(OBSERVAÇÃO: Por "não particionar", quero dizer que apenas manipulamos sda
e ignoramos sda1/sda2/etc
, por exemplo).
Existe algo como for_each_netdev
ou for_each_possible_cpu
para o dispositivo de bloco? Porque pode haver vários discos e preciso de uma maneira de percorrê-los. Ou, o mais tardar, como posso obter a estrutura de dados relacionada com o nome do dispositivo de bloco (como sda
)?
Eu sei que podemos obter um disk_stats
de um disco do hd_struct
do disco, mas como eu poderia obter esse hd_struct
?
Eu li linux2.6.32 / block / genhd.c, e eu sei que o conteúdo do arquivo /sys/block/sda/stat
é gerado por diskstats_show
. Mas como vem o segundo argumento?
Por favor me ajude. obrigado.