January 20th, 2005


splice() / wire() / tee() ... whatever

Linus silently submitted a patch into the 2.6 series recently to redo how pipes are implemented, with the later-stated long term goal of being able to splice and tee file descriptors together in the kernel.

More details: http://lwn.net/Articles/118750/

But it's turning out to not be too long term -- he recently showed some inital code to implement some of it.

I'm excited because it means Perlbal will have to do a LOT less copying. It's like sendfile, except you're able to wire ("splice") arbitrary fds together, regardless of whether they're page-backed or socket-backed. (which is why we can't use sendfile() from one socket to another socket, which is what Perlbal wants to do....)