0

我似乎找不到用于 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 等效的功能?

问候

4

1 回答 1

0

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

系统级别的 NetBSD 与许多基于 unix 的系统一样,努力避免特定于硬件,即使在向用户级别提供详细的硬件特定信息方面也是如此。毕竟,unix 的目标是提供一个跨各种硬件平台统一的系统,而不是提供对特定硬件的详细低级访问。就硬件特定细节而言,您可以获得的最佳信息是驱动程序在启动时打印的有关硬件的信息,因为它被探测和连接。

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

在 x86 平台上,有“sysctl machdep.diskinfo”(以及通过 sysctl(3) 实现的等效 C 级接口)来获取有关 BIOS 报告的关于它在引导时知道的磁盘的详细信息,但这可能不完整。

于 2014-07-05T22:37:16.747 回答