From 0018ac356e6d99d85768b222ec002c5a1b92b8a5 Mon Sep 17 00:00:00 2001 From: Eric Wong Date: Mon, 22 Dec 2014 00:59:36 +0000 Subject: reduce syscalls in recvmsg invocations Favor IO.select over IO#wait since the latter makes another ioctl syscall (which we'll make anyways for IO#nread). Having BasicSocket#recvmsg and recvmsg_nonblock detect the buffer size requires extra syscalls, so pass explict maxmesglen, flags, and maxcontrollen args to elide auto-detection since we already have the buffered amount from IO#nread. This cuts more syscalls from the "dtas-tl cat" invocation with larger tracklists. --- lib/dtas/unix_accepted.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'lib/dtas/unix_accepted.rb') diff --git a/lib/dtas/unix_accepted.rb b/lib/dtas/unix_accepted.rb index 2c82d2a..3008afc 100644 --- a/lib/dtas/unix_accepted.rb +++ b/lib/dtas/unix_accepted.rb @@ -56,7 +56,7 @@ class DTAS::UNIXAccepted # :nodoc: begin begin - msg, _, _ = io.recvmsg_nonblock(nread) + msg, _, _ = io.recvmsg_nonblock(nread, 0, 0) rescue Errno::EAGAIN return :wait_readable rescue EOFError, SystemCallError -- cgit v1.2.3-24-ge0c7