sendfile()はsplice()で実装されるようになったらしい
…この英語が良く理解できない…ぁぁ…
http://kernelnewbies.org/Linux_2_6_23#head-c8fd2455c44d9559429c0f72dbc85cd54a62470d
For the particular case of sending the data from a file descriptor to a fd socket, there's been always the sendfile() syscall. splice() however is a generic mechanism, not just limited to what sendfile(). In other words, sendfile() is just a small subset of what splice can do, splice obsoletes it. In Linux 2.6.23, the sendfile() mechanism implementation is killed, but the API and its functionality is not removed, it's instead implemented internally with the splice() mechanisms.
つまり、splice()がファイルとかソケットにも使えるようになったと言うこと?そうだったら実はかなり革新的な気がする。ゼロコピーの時代。
ユーザーランドのサーバーは、カーネルにIO処理を依頼するだけのプログラムに。ここはIOでブロックするからスレッドにしてーとかforkしてーなんて考えなくていい。何も考えずにepoll()+splice()で。kqueue()+AIOと同じコードを使えるラッパがあれば完璧!
プログラミングもカンタンになって、速くなって軽くなって、良いことばかりでスバラシイ。
…勘違いだったら悲し。
それから、2.6.21からブートパラメータの255バイトの制限が無くなっているらしい。
http://kernelnewbies.org/Linux_2_6_21#head-f32da7658f8c25efeb70d4784b6780edefff7d2c
これでおかしな対処をせずに済む。