Re: splice() on two pipes

From: Max Kellermann
Date: Wed Apr 29 2009 - 15:43:24 EST


On 2009/04/29 17:23, Andi Kleen <andi@xxxxxxxxxxxxxx> wrote:
> I don't think splice is about handling all possible cases,
> but just cases where the kernel can do better than user space.
> I don't think that's the case here.

If splice() is about passing pointers of a pipe buffer, what's more
trivial (and natural) than passing that pointer between two pipes?

> > when I read about the splice() system call, I thought it was obvious
> > that it could copy data between two pipes.
>
> It would be more efficient if you used fd passing to pass the fd
> around to the other process and let it read directly.

That's not so easy in my case. The header output of the one process
has to be parsed before the rest of it (or part of the rest) is going
to be forwarded to the second one. My master process would lose
control over the transfer. splice() looks like the perfect solution.

Max
--
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/