Skip to content
  • Duncan Coutts's avatar
    ced9acdb
    Move {blocked,sleeping}_queue from scheduler global vars to CapIOManager · ced9acdb
    Duncan Coutts authored and Marge Bot's avatar Marge Bot committed
    The blocked_queue_{hd,tl} and the sleeping_queue are currently
    cooperatively managed between the scheduler and (some but not all of)
    the non-threaded I/O manager implementations.
    
    They lived as global vars with the scheduler, but are poked by I/O
    primops and the I/O manager backends.
    
    This patch is a step on the path towards making the management of I/O or
    timer blocking belong to the I/O managers and not the scheduler.
    
    Specifically, this patch moves the {blocked,sleeping}_queue from being
    global vars in the scheduler to being members of the CapIOManager struct
    within each Capability. They are not yet exclusively used by the I/O
    managers: they are still poked from a couple other places, notably in
    the scheduler before calling awaitEvent.
    ced9acdb
    Move {blocked,sleeping}_queue from scheduler global vars to CapIOManager
    Duncan Coutts authored and Marge Bot's avatar Marge Bot committed
    The blocked_queue_{hd,tl} and the sleeping_queue are currently
    cooperatively managed between the scheduler and (some but not all of)
    the non-threaded I/O manager implementations.
    
    They lived as global vars with the scheduler, but are poked by I/O
    primops and the I/O manager backends.
    
    This patch is a step on the path towards making the management of I/O or
    timer blocking belong to the I/O managers and not the scheduler.
    
    Specifically, this patch moves the {blocked,sleeping}_queue from being
    global vars in the scheduler to being members of the CapIOManager struct
    within each Capability. They are not yet exclusively used by the I/O
    managers: they are still poked from a couple other places, notably in
    the scheduler before calling awaitEvent.
Loading