I have been trying to deal with the same issues, transfer
a large chunck of data directly to memory using DMA, however
my understanding is that kernel memory is divided into ALOT of
4k blocks, and any given 4k block can be anywhere, physically
in memory based on the page tables. I was told, a while ago
that there are only two ways to do it.
1) use the page tables to find out where each 4k block is, then transfer 4k at a time
2) reserve a block of memory at boot time, then use that space as "buffer" memory. You may even be able to get a pointer to it. Dave Rector drector@lanl.gov
|