Existe um dispositivo /dev/sda
no seu sistema?
Qual tipo é a variável driveid?
Mostre-nos o código inteiro ou tente alterar o driveid para:
struct hd_driveid driveid;
Depois, você pode imprimir seu conteúdo, por exemplo:
printf("Firmware Revision=%.8s\n",driveid.fw_rev);
printf("Cylinders=%d\n",driveid.cyls);
Verifique também: link