Add bus_dmamap_load_bio and bus_dmamap_load_ccb to bus_dma(9).

Sponsored by:	Intel
Reviewed by:	kib
MFC after:	3 days
This commit is contained in:
Jim Harris 2013-07-17 19:41:16 +00:00
parent 0d6422dd87
commit a073133cdf
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=253434

View File

@ -60,7 +60,7 @@
.\" $FreeBSD$
.\" $NetBSD: bus_dma.9,v 1.25 2002/10/14 13:43:16 wiz Exp $
.\"
.Dd May 12, 2009
.Dd July 17, 2013
.Dt BUS_DMA 9
.Os
.Sh NAME
@ -70,6 +70,8 @@
.Nm bus_dmamap_create ,
.Nm bus_dmamap_destroy ,
.Nm bus_dmamap_load ,
.Nm bus_dmamap_load_bio ,
.Nm bus_dmamap_load_ccb ,
.Nm bus_dmamap_load_mbuf ,
.Nm bus_dmamap_load_mbuf_sg ,
.Nm bus_dmamap_load_uio ,
@ -97,6 +99,14 @@
"bus_size_t buflen" "bus_dmamap_callback_t *callback" "void *callback_arg" \
"int flags"
.Ft int
.Fn bus_dmamap_load_bio "bus_dma_tag_t dmat" "bus_dmamap_t map" \
"struct bio *bio" "bus_dmamap_callback_t *callback" "void *callback_arg" \
"int flags"
.Ft int
.Fn bus_dmamap_load_ccb "bus_dma_tag_t dmat" "bus_dmamap_t map" \
"union ccb *ccb" "bus_dmamap_callback_t *callback" "void *callback_arg" \
"int flags"
.Ft int
.Fn bus_dmamap_load_mbuf "bus_dma_tag_t dmat" "bus_dmamap_t map" \
"struct mbuf *mbuf" "bus_dmamap_callback2_t *callback" "void *callback_arg" \
"int flags"
@ -199,7 +209,10 @@ Client specified callback for receiving mapping information resulting from
the load of a
.Vt bus_dmamap_t
via
.Fn bus_dmamap_load .
.Fn bus_dmamap_load ,
.Fn bus_dmamap_load_bio
or
.Fn bus_dmamap_load_ccb .
Callbacks are of the format:
.Bl -tag -width indent
.It Ft void
@ -624,6 +637,49 @@ This array is only valid during the scope of the callback function.
A mapping could not be achieved within the segment constraints provided
in the tag even though the requested allocation size was less than maxsize.
.El
.It Fn bus_dmamap_load_bio "dmat" "map" "bio" "callback" "callback_arg" "flags"
This is a variation of
.Fn bus_dmamap_load
which maps buffers pointed to by
.Fa bio
for DMA transfers.
.Fa bio
may point to either a mapped or unmapped buffer.
.It Fn bus_dmamap_load_ccb "dmat" "map" "ccb" "callback" "callback_arg" "flags"
This is a variation of
.Fn bus_dmamap_load
which maps data pointed to by
.Fa ccb
for DMA transfers.
The data for
.Fa ccb
may be any of the following types:
.Bl -tag -width ".Er CAM_DATA_SG_PADDR"
.It CAM_DATA_VADDR
The data is a single KVA buffer.
.It CAM_DATA_PADDR
The data is a single bus address range.
.It CAM_DATA_SG
The data is a scatter/gather list of KVA buffers.
.It CAM_DATA_SG_PADDR
The data is a scatter/gather list of bus address ranges.
.It CAM_DATA_BIO
The data is contained in a
.Vt struct bio
attached to the CCB.
.El
.Pp
.Fn bus_dmamap_load_ccb
supports the following CCB XPT function codes:
.Pp
.Bl -item -offset indent -compact
.It
XPT_ATA_IO
.It
XPT_CONT_TARGET_IO
.It
XPT_SCSI_IO
.El
.It Fn bus_dmamap_load_mbuf "dmat" "map" "mbuf" "callback2" "callback_arg" \
"flags"
This is a variation of
@ -898,12 +954,16 @@ These functions include:
.It
.Fn bus_dmamap_load
.It
.Fn bus_dmamap_load_uio
.Fn bus_dmamap_load_bio
.It
.Fn bus_dmamap_load_ccb
.It
.Fn bus_dmamap_load_mbuf
.It
.Fn bus_dmamap_load_mbuf_sg
.It
.Fn bus_dmamap_load_uio
.It
.Fn bus_dmamap_unload
.It
.Fn bus_dmamap_sync