smp: Use process-status-sync-all only while threads are locked.
authorMatt Birkholz <puck@birchwood-abbey.net>
Thu, 12 Mar 2015 18:37:05 +0000 (11:37 -0700)
committerMatt Birkholz <puck@birchwood-abbey.net>
Thu, 12 Mar 2015 18:37:05 +0000 (11:37 -0700)
commitd1a7915188944a495e72513b6a9dcecdeb71b9e3
treee22fca077138bd2b809a6e3d79ed9e8dcfc6a613
parent4a36d8414fa63f0e07b1a39d43dc51df7e94b26d
smp: Use process-status-sync-all only while threads are locked.

Subprocess-global-status-tick now just returns (runtime subprocess)'s
global-status-tick.  Thus process-status-sync-all is used in
single-threaded fashion in handle-subprocess-status-change, which is
used by the test-select- procedures to clear the condition that causes
the test-select- primitives to always return 'process-status-change.

Handle-subprocess-status-change is now only called in test-select-
descriptor.  The non-locking version, %handle-subprocess-status-
change, is only called in io-waiter's wait-for-io loop (the only place
where test-select-registry is used).

Punted the block? parameter to test-select-descriptor.  This procedure
should never be used to block Scheme.  Only the call to test-select-
registry in the wait-for-io loop should block.
src/runtime/io.scm
src/runtime/process.scm
src/runtime/runtime.pkg
src/runtime/thread.scm