2013-12-23 88 views
0

我似乎無法找到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?

問候

回答

0

給定類型的磁盤接口(或任何其他類型的設備驅動程序)的驅動程序源可能是找到特定設備的ioctl最佳規範的地方。

與許多基於unix的系統一樣,系統級別的NetBSD儘量避免使用特定於硬件的方式,即使在向用戶提供詳細的硬件特定信息方面也是如此。畢竟,unix的目標是提供一個統一於各種硬件平臺的系統,而不是提供對特定硬件的詳細低級訪問。在硬件特定細節方面,您可以得到的最好結果是驅動程序在啓動時打印有關硬件的信息,因爲這些信息會被探測和附加。

在更通用的級別上,您基本上只能獲取磁盤和分區標籤 - 即與系統將磁盤設備呈現給用戶區的方式相關的信息。不幸的是,這些文件的唯一驅動程序手冊頁是sd(4)(cd(4)有關於更多的特定於cd-rom設備的ioctls的更多詳細信息)。 scsi(4)爲SCSI和ATAPI接口提供了總線級ioctls。

在x86平臺上,有「sysctl machdep.diskinfo」(和通過sysctl(3)提供的等效C級接口)獲取有關啓動時所知道的關於BIOS的報告的詳細信息,但這可能不完整。