
?? LEFT := 1, RIGHT := 110 ??
?? FMT (FORMAT := ON, keyw := upper, ident := lower) ??
?? NEWTITLE := 'NOS/VE: Program Management - Program Conditions' ??
?? NEWTITLE := '  Global System Declarations' ??
MODULE tmm$dispose_of_monitor_fault;
{   PURPOSE:
{     The purpose of this module is to confine the knowledge necessary
{     route monitor faults to their appropriate handlers.

{   DESIGN:
{     The module has an execution bracket of 2 - 13, and a call bracket
{     of 13.
?? EJECT ??
?? PUSH (LISTEXT := ON) ??
*copyc OST$STATUS
*copyc OST$STACK_FRAME_SAVE_AREA
?? POP ??
?? TITLE := '  Global External Procedures' ??
?? EJECT ??
?? TITLE := '  Internal Declarations' ??
?? EJECT ??
*copyc TMT$MONITOR_FAULT_HANDLER
*copyc OST$MONITOR_FAULT
?? TITLE := '  External Procedures' ??
?? EJECT ??
*copyc TMH$FIND_MONITOR_FAULT
*copyc TMP$FIND_MONITOR_FAULT
?? TITLE := '  [XDCL] tmp$dispose_of_monitor_faults' ??
?? EJECT ??

  PROCEDURE [XDCL] tmp$dispose_of_monitor_faults (sfsa: ^ost$stack_frame_save_area);


    VAR
      fault: ost$monitor_fault,
      fault_found: boolean,
      monitor_fault_handler: tmt$monitor_fault_handler;

    REPEAT
      tmp$find_monitor_fault (sfsa, fault, fault_found, monitor_fault_handler);
      IF fault_found THEN
        monitor_fault_handler^ (fault, sfsa);
      IFEND;
    UNTIL NOT fault_found;
  PROCEND tmp$dispose_of_monitor_faults;

MODEND tmm$dispose_of_monitor_fault;
