Trying to use splice from a driver

From: Francis Moreau
Date: Tue Jul 08 2008 - 15:53:10 EST


Hello,

I'm trying to implement splice ops in a driver, specially the
splice_read method.

Basically the driver receives data and splice them to a pipe in order to
finally move the data to a file.

Before receiving the data, the driver allocates a free page by calling
alloc_page(). Then it fills it with the data received by the device and
then stores the page ref in the splice_pipe_desc structure. Once the
structure is initialised the driver calls splice_to_pipe.

Now the question is what am I supposed to use for pipe_buf_operations in
the splice_pipe_desc structure ?

I'm tempted to use 'user_page_pipe_buf_ops' but I'm not sure. Specially
for the release method, which points to page_cache_pipe_buf_release(),
since the allocated page (the os allocated by the driver) are not coming
from the page cache.

The same is actually true for vmsplice() where the pages are coming from
the user mem space (not from the page cache), so I'm probably missing
something...

Could aynbody enlight me ?

thanks,
--
Francis
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/