correct use of bus_dmamap_sync

Dinesh Nair dinesh at
Tue Oct 25 11:48:32 PDT 2005

On 10/26/05 01:27 John Baldwin said the following:
> On Tuesday 25 October 2005 09:15 am, Dinesh Nair wrote:
>>(must i malloc space for them before passing them into those functions, or
>>will the call to bus_dmamem_alloc do it for me ?)
> bus_dmamem_alloc() will do it for you.


> Probably not as the sync()'s don't really do anything with memory allocated 
> via bus_dmamem_alloc().  The operations are named from the CPU's perspective, 

however, the man page at

"Although no explicit loading is required to access the memory referenced 
by the returned map, the synchronization requirements as described in the 
bus_dmamap_sync() section still apply."

also, is bus_dmamap_load() required, since the same man page section above 
says it isnt ?

have things changed between freebsd 4.x (which i'm using) and freebsd 5.x ?

> thus when you send data to your device, that is a WRITE operation (even 
> though your device is doing a DMA to read data), and when you get data back 
> from your device, that is a READ operation (even though your device is doing 
> a DMA to write the data into the buffer).

thanx, the verbiage on the man page is slightly confusing with it's use of 
CPU, giving the opposite impression.

Regards,                           /\_/\   "All dogs go to heaven."
dinesh at                (0 0)
| for a in past present future; do                                        |
|   for b in clients employers associates relatives neighbours pets; do   |
|   echo "The opinions here in no way reflect the opinions of my $a $b."  |
| done; done                                                              |

More information about the freebsd-hackers mailing list