More centralisation of the I/O manager hooks

Closed Duncan Coutts requested to merge dcoutts/ghc:dcoutts/io-manager-api-more into master

This is a direct follow-on from MR !4694 (closed). It picks up the next planned steps:

It includes

  • introducing a per-capability I/O manager structure
  • moving the {blocked,sleeping}_queue from being global vars in the scheduler to being in the per-cap I/O manager structure
  • clarify the checks used in the scheduler for whether I/O or timers are pending
  • merge the AwaitEvent.h into IOManager.h
  • pass the cap explicitly in various places rather than referring to MainCapability all over the place
Edited by Duncan Coutts

Merge request reports