Type ASSEMBLE
Source Lines : 174
Fixes Applied : 0
Most Recent Version : Thursday, December 7, 1978
Last Fix ID : [Unmodified]
Module
DMTDSP
Function
THE DMTDSP MODULE IS THE MSUP DISPATCHER. IT IS INTENDED TO BE ENTERED AS AN EXIT FROM SUPERVISOR FUNCTIONS WHICH WERE ENTERED FOLLOWING AN INTERRUPT, OR WHICH "UNDISPATCHED" A TASK BY MEANS OF THE FREEZE SVC FUNCTION. DMTDSP MUST BE ENTERED WITH ALL PSW MASKS OFF (EXCEPT MACHINE CHECK).
Attributes
REUSABLE, NON-INTERRUPTABLE
Operation
DMTDSP SCANS THE TASK ELEMENT QUEUE FOR A TASK WHICH IS READY FOR EXECUTION. THE FIRST SUCH TASK FOUND IS DISPATCHED. IF NO READY TASK IS FOUND, DMTDSP LOADS A MASKED ON WAIT STATE PSW. WHEN A TASK IS DISPATCHED, ITS TASK ELEMENT IS ENQUEUED AT THE END OF THE TASK QUEUE, REDUCING THE TASK TO LOWEST PRIORITY FOR THE NEXT DISPATCH. THE EFFECT OF THIS IS A 'ROUND ROBIN' DISPATCHING ALGORITHM. THE TASK TO BE DISPATCHED IS INSPECTED TO SEE IF IT HAD BEEN WAITING ON A LIST OF SYNCH LOCKS. IF SO, EACH SYNCH LOCK IN THE LIST WHICH HAD BEEN WAITED ON AND HAD NOT BEEN POSTED IS CLEARED TO ZERO. THE TASK ID AND TASK ELEMENT FOR THE TASK TO BE DISPATCHED ARE STORED IN LOW STORAGE. THE TASK'S GENERAL REGISTERS ARE RELOADED FROM THE TASK SAVE AREA, AND THE TASK'S RESUME PSW FROM THE TASK SAVE AREA IS LOADED.
Calls to Other Routines
NONE