atomicio contains the following in the read/write loop: ----- case -1: #ifdef EWOULDBLOCK if (errno == EINTR || errno == EWOULDBLOCK) #else if (errno == EINTR) #endif continue; if (errno == EAGAIN) { (void)poll(&pfd, 1, -1); continue; } return 0; ----- On systems where errno is set to EWOULDBLOCK we spin on the read or write without polling. On many other systems (Linux, Solaris, IRIX, ...) EWOULDBLOCK is defined as EAGAIN, and when errno is set to EAGAIN we spin on the read or write without polling. Please see patch. thanks, --ben -------------- next part -------------- A non-text attachment was scrubbed... Name: openssh-atomicio-polling.patch Type: text/x-patch Size: 1005 bytes Desc: not available Url : http://lists.mindrot.org/pipermail/openssh-unix-dev/attachments/20070915/65cc1662/attachment.bin -------------- next part -------------- A non-text attachment was scrubbed... Name: signature.asc Type: application/pgp-signature Size: 189 bytes Desc: OpenPGP digital signature Url : http://lists.mindrot.org/pipermail/openssh-unix-dev/attachments/20070915/65cc1662/attachment-0001.bin