Type ASSEMBLE
Source Lines : 170
Fixes Applied : 0
Most Recent Version : Thursday, December 7, 1978
Last Fix ID : [Unmodified]
Module
DMTWAT
Function
THE DMTWAT MODULE IS A TASK SERVICE ROUTINE WHICH IS CALLED DIRECTLY FROM TASK PROGRAMS BY MEANS OF BRANCH AND LINK. DMTWAT PROVIDES EVENT SYNCHRONIZATION BY MEANS OF SUSPENDING A TASK'S EXECUTION UNTIL SOME SPECIFIED EVENT IS SIGNALLED COMPLETE BY ANOTHER PROCESS IN THE SYSTEM.
Attributes
REUSABLE, NON-INTERRUPTABLE
Operation
DMTWAT BEGINS BY SUSPENDING THE CALLING TASK'S EXECUTION THROUGH THE FREEZE SVC. IF A SINGLE SYNCH LOCK IS SPECIFIED IN THE CALL, IT IS INSPECTED TO SEE IF IT HAS ALREADY BEEN POSTED. IF THE SPECIFIED SYNCH LOCK IS POSTED, CONTROL IS IMMEDIATELY PASSED TO DMTDSP, THE MSUP DISPATCHER. IF THE SYNCH LOCK IS NOT POSTED, THE "WAITING" BIT IS SET IN THE CALLING TASK'S TASK ELEMENT, THE ADDRESS OF THE TASK ELEMENT IS SET IN THE SYNCH LOCK, AND CONTROL IS PASSED TO THE DISPATCHER. IF A LIST OF SYNCH LOCKS IS SPECIFIED IN THE CALL, EACH SYNCH LOCK IN THE LIST WHICH IS NOT FLAGGED TO BE SKIPPED IS INSPECTED TO SEE IF IT HAS ALREADY BEEN POSTED. IF AT LEAST ONE HAS BEEN POSTED, CONTROL IS IMMEDIATELY PASSED TO THE MSUP DISPATCHER. IF NO SYNCH LOCK IN THE LIST IS POSTED, THE "WAITING" AND "LOCKLIST" BITS IN THE CALLING TASK'S TASK ELEMENT ARE SET TO ONE, THE ADDRESS OF THE CALLING TASK ELEMENT IS SET INTO EACH SYNCH LOCK IN THE LIST WHICH IS NOT FLAGGED TO BE SKIPPED, AND CONTROL IS PASSED TO THE DISPATCHER.
Calls to Other Routines
NONE