netbsd ioctl获取硬盘信息

时间:2013-12-23 12:49:32

标签: hard-drive ioctl netbsd

我似乎找不到netbsd的可用ioctl的完整列表。

我希望在硬盘上做一些操作(获取大小,物理扇区大小,型号)。我有在linux中运行的代码。它看起来像这样,我删除了错误等,使其更紧凑:

   ioctl(fileno(driveptr[i]),HDIO_GET_IDENTITY,&hd);
   ioctl(fileno(driveptr[i]),BLKGETSIZE64,&drivesize[i]);
   ioctl(fileno(driveptr[i]),BLKPBSZGET,&psztemp);

在netbsd中是否有与这些ioctl等效的内容?

问候

1 个答案:

答案 0 :(得分:0)

给定类型的磁盘接口(或任何其他类型的设备驱动程序)的驱动程序源可能是查找特定于设备的ioctl的最佳规范位置。

与许多基于unix的系统一样,系统级别的NetBSD尽力避免出现特定于硬件的情况,即使在向用户级别提供详细的硬件特定信息方面也是如此。毕竟,unix的目标是提供一个在各种硬件平台上统一的系统,而不是提供对特定硬件的详细低级访问。在硬件特定细节方面,您可以获得的最佳信息是驱动程序在启动时打印的有关硬件的信息,这些信息在探测和附加时。

在更通用的级别,您基本上只能获得磁盘和分区标签 - 即与系统将磁盘设备呈现给用户区的方式相关的信息。不幸的是,唯一记录这些的驱动程序手册页是sd(4)(cd(4)有更多关于更多特定于cd-rom设备的ioctl的细节)。 scsi(4)记录了SCSI和ATAPI接口的总线级ioctl。

在x86平台上,有" sysctl machdep.diskinfo" (以及通过sysctl(3)的等效C级接口)以获取有关BIOS在启动时报告的有关磁盘的详细信息,但这可能不完整。