Do NOT use permanently-register-io-thread-event in Edwin.
authorMatt Birkholz <puck@birchwood-abbey.net>
Sun, 5 Jul 2015 16:21:17 +0000 (09:21 -0700)
committerMatt Birkholz <puck@birchwood-abbey.net>
Thu, 26 Nov 2015 07:59:18 +0000 (00:59 -0700)
commitbe07e0c208d26d633d6f3e62fde6a4e23c5e950e
tree78e24ecfee58d03b4d2bf14aa7b58830923d5bd7
parentd2d328f3c417eb8a742e4db11e50e7a3f38e7555
Do NOT use permanently-register-io-thread-event in Edwin.

Edwin does not consume the IO in the thread event.  This worked in a
uni-processing world where another thread could consume the IO in
round-robin fashion, but in an SMPing world there is no way to know
when it is appropriate to signal another event.  In a naive
implementation (without special handling of these events), an idle
processor would spin, queuing MANY "IO ready" events to one thread
until another thread consumed the IO.

Edwin's X11 and console display types now block for IO on multiple
descriptors, the X or tty descriptor PLUS the subprocess output
descriptors.  They no longer use permanent IO thread events to handle
the latter.

Edwin's remaining uses of permanently-register-io-thread-event are in
single-threaded OS2 and Win32 worlds.  The runtime's only uses are in
the OS2 and X11 graphics devices where the IO *is* consumed during the
event.
src/edwin/edwin.pkg
src/edwin/process.scm
src/edwin/tterm.scm
src/edwin/xterm.scm