用于硬盘信息的netbsd ioctl

问题描述:

我似乎无法找到netbsd的可用ioctls的完整列表。用于硬盘信息的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中的这些ioctls?

问候

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

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

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

在x86平台上,有“sysctl machdep.diskinfo”(和通过sysctl(3)提供的等效C级接口)获取有关启动时所知道的关于BIOS的报告的详细信息,但这可能不完整。