erlang/otp — pull request #446 by garazdawi (2014-08-14 08:21:59+00:00)
Title: Non-blocking standard output

This pr consists of two changes:

1) Both the fd_driver (i.e. oldshell) and the ttysl_driver (for unix) are changed to use non-blocking I/O where possible, and when not possible a separate thread is used in order to not block the scheduler threads.

2) A synchronous protocol has been added for outputting large chunks of text. This ensures that all stdout data is delivered to the ttysl driver before the emulator terminates. This is a backwards incompatible change of the internal protocol used in between group and user, which should be ok as I doubt anyone outside the Erlang/OTP code base have written their own shell.

The two changes are submitted together as having non-blocking I/O exposes the flaw in the stdout protocol and tests start to fail.