ドライバは、そのデバイスがサポートする DMA バーストサイズを、ddi_dma_attr(9S) 構造体の dma_attr_burstsizes フィールドで指定します。このフィールドは、サポートされるバーストサイズのビットマップです。ただし、システムでは、DMA リソースが割り当てられたときに、デバイスが実際に使用する可能性のあるバーストサイズに対してさらなる制限を加えることがあります。ddi_dma_burstsizes(9F) ルーチンを使用すると、許容されるバーストサイズを取得できます。このルーチンは、デバイスの適切なバーストサイズビットマップを返します。ドライバは、DMA リソースが割り当てられるときに、DMA エンジンに使用する適切なバーストサイズをシステムに問い合わせることができます。
使用例 9-2 バーストサイズの決定#define BEST_BURST_SIZE 0x20 /* 32 bytes */ if (ddi_dma_buf_bind_handle(xsp->handle,xsp->bp, flags, xxstart, (caddr_t)xsp, &cookie, &ccount) != DDI_DMA_MAPPED) { /* error handling */ } burst = ddi_dma_burstsizes(xsp->handle); /* check which bit is set and choose one burstsize to */ /* program the DMA engine */ if (burst & BEST_BURST_SIZE) { /* program DMA engine to use this burst size */ } else { /* other cases */ }