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 サービスの概要

モジュール関数

デバイス情報ツリーノード (dev_info_t) 関数

デバイス (dev_t) 関数

プロパティー関数

デバイスソフトウェア状態関数

メモリー割り当ておよび解放関数

カーネルスレッド制御および同期関数

タスクキュー管理関数

割り込み関数

プログラム式入出力関数

ダイレクトメモリーアクセス (DMA) 関数

ユーザー空間アクセス関数

ユーザープロセスイベント関数

ユーザープロセス情報関数

ユーザーアプリケーションカーネルおよびデバイスアクセス関数

時刻関連関数

電源管理関数

障害管理関数

カーネル統計関数

カーネルロギングおよび印刷関数

バッファリングされた入出力関数

仮想メモリー関数

デバイス ID 関数

SCSI 関数

リソースマップ管理関数

システムのグローバル状態

ユーティリティー関数

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

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

索引

プログラム式入出力関数

プログラム式入出力関数には次のものがあります。

ddi_dev_nregs()

デバイスが備えているレジスタセットの数を返す

ddi_dev_regsize()

デバイスのレジスタのサイズを返す

ddi_regs_map_setup()

レジスタアドレス空間のマッピングを設定する

ddi_regs_map_free()

以前にマップされたレジスタアドレス空間を解放する

ddi_device_copy()

あるデバイスレジスタのデータを別のデバイスレジスタにコピーする

ddi_device_zero()

デバイスをゼロに初期化する

ddi_check_acc_handle()

データアクセスハンドルをチェックする

ddi_get8()

マップされたメモリー、デバイスレジスタ、または DMA メモリーから 8 ビットデータを読み取る

ddi_get16()

マップされたメモリー、デバイスレジスタ、または DMA メモリーから 16 ビットデータを読み取る

ddi_get32()

マップされたメモリー、デバイスレジスタ、または DMA メモリーから 32 ビットデータを読み取る

ddi_get64()

マップされたメモリー、デバイスレジスタ、または DMA メモリーから 64 ビットデータを読み取る

ddi_put8()

マップされたメモリー、デバイスレジスタ、または DMA メモリーに 8 ビットデータを書き込む

ddi_put16()

マップされたメモリー、デバイスレジスタ、または DMA メモリーに 16 ビットデータを書き込む

ddi_put32()

マップされたメモリー、デバイスレジスタ、または DMA メモリーに 32 ビットデータを書き込む

ddi_put64()

マップされたメモリー、デバイスレジスタ、または DMA メモリーに 64 ビットデータを書き込む

ddi_rep_get8()

マップされたメモリー、デバイスレジスタ、または DMA メモリーから複数の 8 ビットデータを読み取る

ddi_rep_get16()

マップされたメモリー、デバイスレジスタ、または DMA メモリーから複数の 16 ビットデータを読み取る

ddi_rep_get32()

マップされたメモリー、デバイスレジスタ、または DMA メモリーから複数の 32 ビットデータを読み取る

ddi_rep_get64()

マップされたメモリー、デバイスレジスタ、または DMA メモリーから複数の 64 ビットデータを読み取る

ddi_rep_put8()

マップされたメモリー、デバイスレジスタ、または DMA メモリーに複数の 8 ビットデータを書き込む

ddi_rep_put16()

マップされたメモリー、デバイスレジスタ、または DMA メモリーに複数の 16 ビットデータを書き込む

ddi_rep_put32()

マップされたメモリー、デバイスレジスタ、または DMA メモリーに複数の 32 ビットデータを書き込む

ddi_rep_put64()

マップされたメモリー、デバイスレジスタ、または DMA メモリーに複数の 64 ビットデータを書き込む

ddi_peek8()

ある場所から 8 ビット値を慎重に読み取る

ddi_peek16()

ある場所から 16 ビット値を慎重に読み取る

ddi_peek32()

ある場所から 32 ビット値を慎重に読み取る

ddi_peek64()

ある場所から 64 ビット値を慎重に読み取る

ddi_poke8()

ある場所に 8 ビット値を慎重に書き込む

ddi_poke16()

ある場所に 16 ビット値を慎重に書き込む

ddi_poke32()

ある場所に 32 ビット値を慎重に書き込む

ddi_poke64()

ある場所に 64 ビット値を慎重に書き込む

上に示した一般的なプログラム式入出力関数は常に、次に示す memio、および pci_config 関数の代わりに使用できます。ただし、コンパイル時にアクセスのタイプがわかっている場合は、次の関数を代わりに使用できます。

ddi_io_get8()

入出力空間内のマップされたデバイスレジスタから 8 ビットデータを読み取る

ddi_io_get16()

入出力空間内のマップされたデバイスレジスタから 16 ビットデータを読み取る

ddi_io_get32()

入出力空間内のマップされたデバイスレジスタから 32 ビットデータを読み取る

ddi_io_put8()

入出力空間内のマップされたデバイスレジスタに 8 ビットデータを書き込む

ddi_io_put16()

入出力空間内のマップされたデバイスレジスタに 16 ビットデータを書き込む

ddi_io_put32()

入出力空間内のマップされたデバイスレジスタに 32 ビットデータを書き込む

ddi_io_rep_get8()

入出力空間内のマップされたデバイスレジスタから複数の 8 ビットデータを読み取る

ddi_io_rep_get16()

入出力空間内のマップされたデバイスレジスタから複数の 16 ビットデータを読み取る

ddi_io_rep_get32()

入出力空間内のマップされたデバイスレジスタから複数の 32 ビットデータを読み取る

ddi_io_rep_put8()

入出力空間内のマップされたデバイスレジスタに複数の 8 ビットデータを書き込む

ddi_io_rep_put16()

入出力空間内のマップされたデバイスレジスタに複数の 16 ビットデータを書き込む

ddi_io_rep_put32()

入出力空間内のマップされたデバイスレジスタに複数の 32 ビットデータを書き込む

ddi_mem_get8()

メモリー空間または DMA メモリー内のマップされたデバイスから 8 ビットデータを読み取る

ddi_mem_get16()

メモリー空間または DMA メモリー内のマップされたデバイスから 16 ビットデータを読み取る

ddi_mem_get32()

メモリー空間または DMA メモリー内のマップされたデバイスから 32 ビットデータを読み取る

ddi_mem_get64()

メモリー空間または DMA メモリー内のマップされたデバイスから 64 ビットデータを読み取る

ddi_mem_put8()

メモリー空間または DMA メモリー内のマップされたデバイスに 8 ビットデータを書き込む

ddi_mem_put16()

メモリー空間または DMA メモリー内のマップされたデバイスに 16 ビットデータを書き込む

ddi_mem_put32()

メモリー空間または DMA メモリー内のマップされたデバイスに 32 ビットデータを書き込む

ddi_mem_put64()

メモリー空間または DMA メモリー内のマップされたデバイスに 64 ビットデータを書き込む

ddi_mem_rep_get8()

メモリー空間または DMA メモリー内のマップされたデバイスから複数の 8 ビットデータを読み取る

ddi_mem_rep_get16()

メモリー空間または DMA メモリー内のマップされたデバイスから複数の 16 ビットデータを読み取る

ddi_mem_rep_get32()

メモリー空間または DMA メモリー内のマップされたデバイスから複数の 32 ビットデータを読み取る

ddi_mem_rep_get64()

メモリー空間または DMA メモリー内のマップされたデバイスから複数の 64 ビットデータを読み取る

ddi_mem_rep_put8()

メモリー空間または DMA メモリー内のマップされたデバイスに複数の 8 ビットデータを書き込む

ddi_mem_rep_put16()

メモリー空間または DMA メモリー内のマップされたデバイスに複数の 16 ビットデータを書き込む

ddi_mem_rep_put32()

メモリー空間または DMA メモリー内のマップされたデバイスに複数の 32 ビットデータを書き込む

ddi_mem_rep_put64()

メモリー空間または DMA メモリー内のマップされたデバイスに複数の 64 ビットデータを書き込む

pci_config_setup()

PCI ローカルバス構成スペースへのアクセスを設定する

pci_config_teardown()

PCI ローカルバス構成スペースへのアクセスを破棄する

pci_config_get8()

PCI ローカルバス構成スペースから 8 ビットデータを読み取る

pci_config_get16()

PCI ローカルバス構成スペースから 16 ビットデータを読み取る

pci_config_get32()

PCI ローカルバス構成スペースから 32 ビットデータを読み取る

pci_config_get64()

PCI ローカルバス構成スペースから 64 ビットデータを読み取る

pci_config_put8()

PCI ローカルバス構成スペースに 8 ビットデータを書き込む

pci_config_put16()

PCI ローカルバス構成スペースに 16 ビットデータを書き込む

pci_config_put32()

PCI ローカルバス構成スペースに 32 ビットデータを書き込む

pci_config_put64()

PCI ローカルバス構成スペースに 64 ビットデータを書き込む

表 B-4 非推奨のプログラム式入出力関数

非推奨の関数
代わりの FEATURE
ddi_getb()
ddi_get8()
ddi_getl()
ddi_get32()
ddi_getll()
ddi_get64()
ddi_getw()
ddi_get16()
ddi_io_getb()
ddi_io_get8()
ddi_io_getl()
ddi_io_get32()
ddi_io_getw()
ddi_io_get16()
ddi_io_putb()
ddi_io_put8()
ddi_io_putl()
ddi_io_put32()
ddi_io_putw()
ddi_io_put16()
ddi_io_rep_getb()
ddi_io_rep_get8()
ddi_io_rep_getl()
ddi_io_rep_get32()
ddi_io_rep_getw()
ddi_io_rep_get16()
ddi_io_rep_putb()
ddi_io_rep_put8()
ddi_io_rep_putl()
ddi_io_rep_put32()
ddi_io_rep_putw()
ddi_io_rep_put16()
ddi_map_regs()
ddi_regs_map_setup()
ddi_mem_getb()
ddi_mem_get8()
ddi_mem_getl()
ddi_mem_get32()
ddi_mem_getll()
ddi_mem_get64()
ddi_mem_getw()
ddi_mem_get16()
ddi_mem_putb()
ddi_mem_put8()
ddi_mem_putl()
ddi_mem_put32()
ddi_mem_putll()
ddi_mem_put64()
ddi_mem_putw()
ddi_mem_put16()
ddi_mem_rep_getb()
ddi_mem_rep_get8()
ddi_mem_rep_getl()
ddi_mem_rep_get32()
ddi_mem_rep_getll()
ddi_mem_rep_get64()
ddi_mem_rep_getw()
ddi_mem_rep_get16()
ddi_mem_rep_putb()
ddi_mem_rep_put8()
ddi_mem_rep_putl()
ddi_mem_rep_put32()
ddi_mem_rep_putll()
ddi_mem_rep_put64()
ddi_mem_rep_putw()
ddi_mem_rep_put16()
ddi_peekc()
ddi_peek8()
ddi_peekd()
ddi_peek64()
ddi_peekl()
ddi_peek32()
ddi_peeks()
ddi_peek16()
ddi_pokec()
ddi_poke8()
ddi_poked()
ddi_poke64()
ddi_pokel()
ddi_poke32()
ddi_pokes()
ddi_poke16()
ddi_putb()
ddi_put8()
ddi_putl()
ddi_put32()
ddi_putll()
ddi_put64()
ddi_putw()
ddi_put16()
ddi_rep_getb()
ddi_rep_get8()
ddi_rep_getl()
ddi_rep_get32()
ddi_rep_getll()
ddi_rep_get64()
ddi_rep_getw()
ddi_rep_get16()
ddi_rep_putb()
ddi_rep_put8()
ddi_rep_putl()
ddi_rep_put32()
ddi_rep_putll()
ddi_rep_put64()
ddi_rep_putw()
ddi_rep_put16()
ddi_unmap_regs()
ddi_regs_map_free()
inb()
ddi_io_get8()
inl()
ddi_io_get32()
inw()
ddi_io_get16()
outb()
ddi_io_put8()
outl()
ddi_io_put32()
outw()
ddi_io_put16()
pci_config_getb()
pci_config_get8()
pci_config_getl()
pci_config_get32()
pci_config_getll()
pci_config_get64()
pci_config_getw()
pci_config_get16()
pci_config_putb()
pci_config_put8()
pci_config_putl()
pci_config_put32()
pci_config_putll()
pci_config_put64()
pci_config_putw()
pci_config_put16()
repinsb()
ddi_io_rep_get8()
repinsd()
ddi_io_rep_get32()
repinsw()
ddi_io_rep_get16()
repoutsb()
ddi_io_rep_put8()
repoutsd()
ddi_io_rep_put32()
repoutsw()
ddi_io_rep_put16()