Oracle® Solaris 11.2 デバイスドライバの記述

印刷ビューの終了

更新: 2014 年 9 月
 
 

オブジェクトのロック

DMA リソースをメモリーオブジェクトに割り当てる前に、そのオブジェクトを移動できないようにする必要があります。そうしないと、デバイスがオブジェクトへの書き込みを試している間に、システムがそのオブジェクトをメモリーから削除する可能性があります。オブジェクトが見つからないと、データ転送に失敗し、システムが破壊される恐れがあります。DMA 転送中にメモリーオブジェクトが移動できないようにするプロセスは、オブジェクトのロックダウンと呼ばれます。

    次のオブジェクトタイプは、明示的なロックが必要ありません。

  • strategy(9E) によってファイルシステムから生成されるバッファー。これらのバッファーはファイルシステムによってすでにロックされています。

  • デバイスドライバ内で割り当てられたカーネルメモリー ( ddi_dma_mem_alloc(9F) で割り当てられたものなど)。

ユーザー空間から生成されるバッファーなど、その他のオブジェクトについては、physio(9F) またはddi_umem_lock(9F) を使用してロックダウンする必要があります。これらの関数を使ったオブジェクトのロックダウンは通常、文字デバイスドライバの read(9E) またはwrite(9E) ルーチン内で実行されます。Data Transfer Methodsを参照してください。