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>
Mon, 6 Jul 2015 05:52:44 +0000 (22:52 -0700)
commitd145a264fa17e110241dbbd4f49ca8cfc73439e6
treed664bb850e4fedb944ab62f1730ead5cfbe7340a
parent4ab17aa2ce7df0020431eafd4b441a707f1aa8d5
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