[servers/console] Fix reentrancy issues #124
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There were a few:
handle_connection
method would save away the mailbox IDs forits connection to the video server (VGA), for later use. It would then
sit and block on receive on the input mailbox from it, effectively
blocking other threads from using it. A typical reentrancy bug.
video_mode_set()
,using the above data structure, but if multiple consoles were being
opened simultaneously (which happen now since we run servers in parallel
at boot), the same thing could happen - multiple threads tried to use a
single connection to the VGA server, which works very poorly. I added a
poor man's semaphore to work around this.