More centralisation of the I/O manager hooks
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 toMainCapability
all over the place
Edited by Duncan Coutts