DDI 数据结构中某些字段的数据类型(如 buf(9S))已被更改。使用这些数据结构的驱动程序应确保正确使用这些字段。下面列出了变动很大的数据结构及字段。
以下列出的字段与传输大小(现在可超过 4 GB)有关。
size_t b_bcount; /* was type unsigned int */ size_t b_resid; /* was type unsigned int */ size_t b_bufsize; /* was type long */
ddi_dma_attr(9S) 结构定义 DMA 引擎和设备的属性。因为这些属性指定寄存器大小,所以使用了固定宽度的数据类型而不是基本类型。
uint32_t dmac_address; /* was type unsigned long */ size_t dmac_size; /* was type u_int */
ddi_dma_cookie(9S) 结构包含 32 位 DMA 地址,因此使用了固定宽度的数据类型来定义该地址。其大小已重新定义为 size_t
。
uint_t sts_rqpkt_state; /* was type u_long */ uint_t sts_rqpkt_statistics; /* was type u_long */
uint_t pkt_flags; /* was type u_long */ int pkt_time; /* was type long */ ssize_t pkt_resid; /* was type long */ uint_t pkt_state; /* was type u_long */ uint_t pkt_statistics; /* was type u_long */
由于 scsi_pkt(9S) 结构中的 pkt_flags
、pkt_state
和 pkt_statistics
字段无需增大,因此这些字段已重新定义为 32 位整数。数据传输大小 pkt_resid 字段需要增大,已重新定义为 ssize_t
。