Not sure how far you got meanwhile but here some comments:
What you want is a common problem and there are solutiuons.
In order to do DMA to or from user space several problems must be solved:
first: DMA is done on physical addresses, while user (and actually even kernel) memory is looked at through virtual addresses. The next issue is that virtual memory is organized in pages of physical memory that are not necessary consecutive. This means you need to break down the DMA in chunks or use hardware that can do this for you, such as the PLX 9054 (scatter gather DMA ) Finally, the physical pages may be moved around by the system. To prevent this from occuring during a DMA, the pages must be locked in physical memory. For all the issues there are kernel routines but it is not so easy to do. Moreover, it can be unsafe if you don't take great care. This is why the classic approach is done with all the memory copying. Nevertheless, I also would like to get a 9054 driver going. If you are serious, give it a try and I help where I can.