[lkml]   [2007]   [Aug]   [12]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
Messages in this thread
    SubjectRe: splice question
    On Sun, Aug 12, 2007 at 12:41:54PM -0700, Linus Torvalds wrote:
    >On Sun, 12 Aug 2007, David H?rdeman wrote:
    >> Otherwise I guess I'd have to add a second pipe, then (in a loop)
    >> tee() from the first to the second pipe and then splice from the second pipe
    >> to a socket. Doesn't sound very elegant and would need quite a lot of extra
    >> syscalls.
    >You really should think of this as a memcpy(), and you'll be in the right
    >mindframe. The system calls themselves are cheap.

    Ok, I've implemented it using two pipes, and it works. But it does seem
    a bit case one client is not keeping up, the data will
    have to be tee():ed first from pipe1 to pipe2, only to then find out
    that the splice() from pipe2 to socket only does a partial transfer
    after which the data in pipe2 has to be thrown away and then the loop
    starts over with the next client.

    A tee() from pipe1 to the socket could (I imagine) realize immediately
    that the socket does not have enough buffer space and return EWOULDBLOCK
    and avoid at least one copy?

    David Härdeman
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to
    More majordomo info at
    Please read the FAQ at

     \ /
      Last update: 2007-08-12 22:59    [W:0.019 / U:0.620 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site