splice question

From: David Härdeman
Date: Sun Aug 12 2007 - 13:18:21 EST


I'm currently toying with splice. The test program I have sends a MPEG2 transport stream from a dvb card and sends it to N clients via http.

Since the dvb frontend driver doesn't support splice (linux/drivers/media/dvb/dvb-core/dmxdev.c I guess, anyone interested in adding splice support to it?) I had to do a normal read() to a user-space buffer and then write that to a pipe.

Once the data is in the pipe, my idea was to tee() from the pipe to each client socket using nonblocking ops, and then consume the data by splicing it to /dev/null.

The problem is that tee() doesn't support sockets. Is this a limitation that would be easy to fix?

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.

--
David Härdeman
-
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/