?? LEFT := 1, RIGHT := 110 ??
MODULE osm$system_control_services_r1;
{
{ This module contains miscellaneous service routines used while controlling
{ the system via the monitor commands IDLE_SYSTEM, RESUME_SYSTEM, and TERMINATE_SYSTEM.
{ This module is located on the following library:
{        OSF$SYSTEM_CORE_113
{

?? PUSH (LISTEXT := ON) ??
*copyc ost$status
?? POP ??
*copyc jmv$jcb
*copyc ose$multipro_exceptions
*copyc oss$mainframe_pageable
*copyc ost$global_task_id
*copyc ost$wait
*copyc mtv$nosve_control_status
*copyc mtv$scb
*copyc mtt$system_update_requests
*copyc ost$idle_state
*copyc osp$begin_system_activity
*copyc osp$end_system_activity
*copyc osp$set_status_abnormal
?? EJECT ??
  FUNCTION [XDCL, #GATE] osp$idle_requested_r1: boolean;

    osp$idle_requested_r1 := (mtv$scb.nos_180_status.system_status.idle_status_block.requested_status =
          mtc$idled_system);

  FUNCEND osp$idle_requested_r1;

  PROCEDURE [XDCL, #GATE] osp$update_idle_state_r1 (idle_state: ost$idle_state);

    CASE idle_state OF
    = osc$system_not_idle =
      mtv$nosve_control_status.idle_state := mtc$system_not_idle;
      mtv$scb.nos_180_status.system_status.idle_status_block.actual_status := mtc$running_system;
    = osc$system_idle =
      mtv$nosve_control_status.idle_state := mtc$system_idle;
      mtv$scb.nos_180_status.system_status.idle_status_block.actual_status := mtc$idled_system;
    = osc$idle_system_in_progress =
      mtv$nosve_control_status.idle_state := mtc$idle_system_in_progress;
    = osc$resume_system_in_progress =
      mtv$nosve_control_status.idle_state := mtc$resume_system_in_progress;
    ELSE
      ;
    CASEND;

  PROCEND osp$update_idle_state_r1;

  PROCEDURE [XDCL, #GATE] osp$terminate_system_r1;

    mtv$scb.nos_180_status.system_status.idle_status_block.requested_status := mtc$idled_system;
    mtv$scb.nos_180_status.cause_of_idle := syc$ic_system_terminated;

  PROCEND osp$terminate_system_r1;

  PROCEDURE [XDCL, #GATE] osp$get_cause_of_idle (VAR idle_code: syt$180_idle_code);

    idle_code := mtv$scb.nos_180_status.cause_of_idle;

  PROCEND osp$get_cause_of_idle;

  PROCEDURE [XDCL, #GATE] osp$jt_begin_system_activity;

    osp$begin_system_activity;

  PROCEND osp$jt_begin_system_activity;

  PROCEDURE [XDCL, #GATE] osp$jt_end_system_activity;

    osp$end_system_activity;

  PROCEND osp$jt_end_system_activity;
MODEND osm$system_control_services_r1;
