JavaScript is required to for searching.
ナビゲーションリンクをスキップ
印刷ビューの終了
デバイスドライバの記述     Oracle Solaris 10 8/11 Information Library (日本語)
search filter icon
search icon

ドキュメントの情報

はじめに

パート I Solaris プラットフォーム用デバイスドライバの設計

1.  Solaris デバイスドライバの概要

2.  Solaris カーネルとデバイスツリー

3.  マルチスレッド

4.  プロパティー

5.  イベントの管理とタスクのキュー

6.  ドライバの自動設定

7.  デバイスアクセス: プログラム式入出力

8.  割り込みハンドラ

9.  ダイレクトメモリーアクセス (DMA)

10.  デバイスメモリーおよびカーネルメモリーのマッピング

11.  デバイスコンテキスト管理

12.  電源管理

13.  Solaris ドライバの強化

14.  階層化ドライバインタフェース (LDI)

パート II 特定の種類のデバイスドライバの設計

15.  文字デバイスのドライバ

16.  ブロックデバイスのドライバ

17.  SCSI ターゲットドライバ

18.  SCSI ホストバスアダプタドライバ

19.  ネットワークデバイスのドライバ

20.  USB ドライバ

パート III デバイスドライバの構築

21.  ドライバのコンパイル、ロード、パッケージ化、およびテスト

22.  デバイスドライバのデバッグ、テスト、およびチューニング

23.  推奨されるコーティング方法

パート IV 付録

A.  ハードウェアの概要

B.  Solaris DDI/DKI サービスの概要

C.  64 ビットデバイスドライバの準備

64 ビットドライバの設計の紹介

一般的な変換手順

固定幅型をハードウェアレジスタに使用する

固定幅の共通アクセス関数を使用する

派生型の使用を確認および拡張する

DDI データ構造体内の変更されたフィールドを確認する

buf 構造体の変更内容

ddi_dma_attr

ddi_dma_cookie 構造体の変更内容

csi_arq_status 構造体の変更内容

scsi_pkt 構造体の変更内容

DDI 関数の変更された引数を確認する

getrbuf() 引数の変更内容

drv_getparm() 引数の変更内容

delay() および timeout() 引数の変更内容

rmallocmap() および rmallocmap_wait() 引数の変更内容

scsi_alloc_consistent_buf() 引数の変更内容

uiomove() 引数の変更内容

cv_timedwait() および cv_timedwait_sig() 引数の変更内容

ddi_device_copy() 引数の変更内容

ddi_device_zero() 引数の変更内容

ddi_dma_mem_alloc() 引数の変更内容

データ共有を処理するルーチンを変更する

ioctl() でのデータ共有

devmap() でのデータ共有

mmap() でのデータ共有

x86 ベースのプラットフォームで 64 ビット Long データ型の構造体を確認する

よく知られている ioctl インタフェース

デバイスのサイズ

D.  コンソールフレームバッファードライバ

索引

よく知られている ioctl インタフェース

多くの ioctl(9E) 処理は、デバイスドライバのクラスに共通しています。たとえば、ほとんどのディスクドライバは、ioctlsdkio(7I) ファミリの多くを実装しています。これらのインタフェースの多くは、データ構造体をカーネルにコピーしたりカーネルからコピーしたりします。これらのデータ構造体の一部では、LP64 データモデルでサイズが変わりました。次の節では、ioctlsdkiofdio(7I)fbio(7I)cdio(7I)、および mtio(7I) ファミリについて、64 ビットドライバの ioctl ルーチンで明示的な変換が必要になった ioctls を一覧表示します。

ioctl コマンド
影響を受けるデータ構造体
参照
DKIOCGAPART

DKIOCSAPART

dk_map

dk_allmap

DKIOGVTOC

DKIOSVTOC

partition

vtoc

FBIOPUTCMAP

FBIOGETCMAP

fbcmap
FBIOPUTCMAPI

FBIOGETCMAPI

fbcmap_i
FBIOCCURSOR

FBIOSCURSOR

fbcursor
CDROMREADMODE1

CDROMREADMODE2

cdrom_read
CDROMCDDA
cdrom_cdda
CDROMCDXA
cdrom_cdxa
CDROMSUBCODE
cdrom_subcode
FDIOCMD
fd_cmd
FDRAW
fd_raw
MTIOCTOP
mtop
MTIOCGET
mtget
MTIOCGETDRIVETYPE
mtdrivetype_request
USCSICMD
uscsi_cmd

デバイスのサイズ

nblocks プロパティーは、ブロックデバイスドライバの各スライスによってエクスポートされます。このプロパティーには、デバイスの各スライスがサポートできる 512 バイトのブロックの数が含まれています。nblocks プロパティーは、符号付きの 32 ビット量として定義され、スライスの最大サイズを 1T バイトに制限します。

ディスクあたり 1T バイトを超える記憶領域を提供するディスクデバイスは、Nblocks プロパティーを定義する必要があります。このプロパティーには、デバイスがサポートできる 512 バイトのブロックの数を引き続き含めてください。ただし、Nblocks は符号付きの 64 ビット量であり、ディスク容量に対する実際的な制限は削除されます。

nblocks プロパティーは推奨されなくなりました。すべてのディスクデバイスで Nblocks プロパティーを指定してください。