linux splice() for DMA copy

linux 2.6.17+ has the ability to copy (DMA)-memory directly via a kernel buffer, using the syscall splice(). an advantage is, that the CPU isnt involved at all.

i have several firewire cams which deliver their data via DMA. then i copy the data with cudamemcpy() onto the device (which is done by DMA, too, i think).

this way there is a heavy CPU usage, because the data is copied by using userspace memory. but this wouldnt be necessary, if “zero copying” described above could be used.

i know that the driver should support a solution for that in the future. but do you guys here see a way, doing it of your own?

it s a very linux specific question, sorry for that ;)


I was discussing this with a couple of guys in my office yesterday. I can;t think of a way for it to be possible but if it was would be a big help. I’m looking to do a similair sort of thing but with a DSP unit rather than a cam.