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 を見つけるための最適な正規の場所です。

多くの UNIX ベースのシステムと同様に、システム レベルでの NetBSD は、ユーザー レベルに詳細なハードウェア固有の情報を提供するという点でも、ハードウェア固有になることを避けようとします。結局のところ、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 に答える