?? RIGHT := 110 ??
?? NEWTITLE := 'NOS/VE System : Miscellaneous Boot Hooks' ??
MODULE sym$misc_boot_hooks;

{ PURPOSE:
{   This module contains all of the procedure hooks needed so that the boot will link.  The procedures
{   do not contain any code because they are never called in the boot but nevertheless the call may
{   exist in OSF$BOOT_JOB.

?? NEWTITLE := 'Global Declarations Referenced by This Module', EJECT ??
?? PUSH (LISTEXT := ON) ??
*copyc cmt$element_state
*copyc cmt$physical_address
*copyc dmt$sc_flaw_command
*copyc iot$pp_number
*copyc mmt$active_segment_table
*copyc mmt$segment_descriptor_table
*copyc mmt$segment_descriptor_table_ex
*copyc mtt$monitor_xp_slot_pointers
*copyc ost$hardware_subranges
*copyc ost$processor_id
*copyc ost$wait
*copyc pmt$log_msg_text
*copyc pmt$program_name
?? POP ??
*copyc osp$system_error
*copyc pmp$delay
?? TITLE := 'Global variables declared in this module', EJECT ??

{ These variables are not used in the boot, but need to be declared to allow linking of the boot.

  VAR
    mtv$monitor_xp_slot_pointers: [XDCL] mtt$monitor_xp_slot_pointers := [NIL, NIL],
    syv$run_all_timestamp: [XDCL] integer := 0,
    syv$repeatable_command_p: [XDCL] ^string (*) := NIL;

?? TITLE := 'cmp$find_redundant_path', EJECT ??

  PROCEDURE [XDCL, #GATE] cmp$find_redundant_path
    (    primary_path_element: cmt$physical_address;
         new_state: cmt$element_state;
     VAR redundant_path_available: boolean;
     VAR update_controller_address: boolean;
     VAR number_of_path: integer;
     VAR redundant_channel_list: ARRAY [cmt$physical_equipment_number] OF cmt$physical_address;
     VAR redundant_path_pp_list: ARRAY [cmt$physical_equipment_number] OF iot$pp_number;
     VAR driver_name: pmt$program_name;
     VAR pp_table_rma_list: ARRAY [cmt$physical_equipment_number] OF ost$real_memory_address);

     redundant_path_available := FALSE;

  PROCEND cmp$find_redundant_path;

?? TITLE := 'dmp$store_sc_flaw_command', EJECT ??
  PROCEDURE [XDCL, #GATE] dmp$store_sc_flaw_command
    (    p_sc_flaw: ^dmt$sc_flaw_command);

    osp$system_error (' DMP$STORE_SC_FLAW_COMMAND should not be called in the boot.', NIL);

  PROCEND dmp$store_sc_flaw_command;
?? TITLE := 'dsp$mtr_save_cause_and_time', EJECT ??
  PROCEDURE [XDCL] dsp$mtr_save_cause_and_time
    (    timestamp: integer;
         probable_cause: integer);

  PROCEND dsp$mtr_save_cause_and_time;
?? TITLE := 'dsp$start_one_cpu', EJECT ??
  PROCEDURE [XDCL] dsp$start_one_cpu
    (    processor_id: ost$processor_id;
     VAR status: ost$status);

    status.normal := TRUE;

  PROCEND dsp$start_one_cpu;
?? TITLE := 'dsp$system_committed', EJECT ??
  FUNCTION [XDCL] dsp$system_committed: boolean;
    dsp$system_committed := FALSE;
  FUNCEND dsp$system_committed;
?? TITLE := 'iop$allocate_usage_counters', EJECT ??
  PROCEDURE [XDCL] iop$allocate_usage_counters
    (VAR status: ost$status);

    status.normal := TRUE;

  PROCEND iop$allocate_usage_counters;
?? OLDTITLE ??
?? NEWTITLE := 'lgp$add_entry_to_critical_log', EJECT ??
  PROCEDURE [XDCL] lgp$add_entry_to_critical_log
    (    text: pmt$log_msg_text;
     VAR status: ost$status);

    status.normal := TRUE;

  PROCEND lgp$add_entry_to_critical_log;
?? TITLE := 'mmp$assign_contiguous_memory', EJECT ??
  PROCEDURE [XDCL, #GATE] mmp$assign_contiguous_memory
    (    process_virtual_address: ^cell;
         segment_length: ost$segment_length;
     VAR status: ost$status);

     osp$system_error (' MMP$ASSIGN_CONTIGUOUS_MEMORY should not be called in the boot.', NIL);

  PROCEND mmp$assign_contiguous_memory;
?? TITLE := 'mmp$aste_pointer', EJECT ??
  PROCEDURE [XDCL, #GATE] mmp$aste_pointer
    (    asid: ost$asid;
     VAR aste_p: ^mmt$active_segment_table_entry);

    osp$system_error (' MMP$ASTE_POINTER should not be called in the boot.', NIL);

  PROCEND mmp$aste_pointer;
?? TITLE := 'mmp$close_asid_based_segment', EJECT ??
  PROCEDURE [XDCL] mmp$close_asid_based_segment
    (    segment_number: ost$segment;
     VAR status: ost$status);

    status.normal := TRUE;

  PROCEND mmp$close_asid_based_segment;
?? TITLE := 'mmp$free_pages', EJECT ??
  PROCEDURE [XDCL] mmp$free_pages
    (    pva_p: ^cell;
         length: ost$byte_count;
         waitopt: ost$wait;
     VAR status: ost$status);

    status.normal := TRUE;

  PROCEND mmp$free_pages;
?? TITLE := 'mmp$invalidate_segment', EJECT ??
  PROCEDURE [XDCL, #GATE] mmp$invalidate_segment
    (    segment_number: ost$segment;
     VAR status: ost$status);

    status.normal := TRUE;

  PROCEND mmp$invalidate_segment;
?? TITLE := 'mmp$open_asid_based_segment', EJECT ??
  PROCEDURE [XDCL] mmp$open_asid_based_segment
    (    sdt_entry: mmt$segment_descriptor;
         sdtx_entry: mmt$segment_descriptor_extended;
     VAR segment_number: ost$segment;
     VAR status: ost$status);

     status.normal := TRUE;

  PROCEND mmp$open_asid_based_segment;
?? TITLE := 'mmp$preallocate_file_space', EJECT ??
  PROCEDURE [XDCL, #GATE] mmp$preallocate_file_space
    (    process_virtual_address: ^cell;
         segment_length: ost$segment_length;
     VAR status: ost$status);

     osp$system_error (' MMP$PREALLOCATE_FILE_SPACE should not be called in the boot.', NIL);

  PROCEND mmp$preallocate_file_space;
?? TITLE := 'mmp$verify_no_space_available', EJECT ??
  PROCEDURE [XDCL, #GATE] mmp$verify_no_space_available
    (    process_virtual_address: ^cell;
     VAR no_space_available: boolean;
     VAR status: ost$status);

    no_space_available := FALSE;
    status.normal := TRUE;

  PROCEND mmp$verify_no_space_available;
?? TITLE := 'mmp$wait_io_completion', EJECT ??
  PROCEDURE [XDCL] mmp$wait_io_completion
    (    p: ^cell;
     VAR status: ost$status);

    pmp$delay (1, status);

  PROCEND mmp$wait_io_completion;
?? TITLE := 'ocp$find_debug_entry_point', EJECT ??
  PROCEDURE [XDCL] ocp$find_debug_entry_point
    (    entry_point: pmt$program_name;
     VAR found: boolean;
     VAR module_name: pmt$program_name;
     VAR segment: ost$segment;
     VAR offset: ost$segment_offset;
     VAR status: ost$status);

  found := FALSE;
  status.normal := TRUE;

  PROCEND ocp$find_debug_entry_point;
?? TITLE := 'osp$check_for_job_recovery', EJECT ??
  PROCEDURE [XDCL] osp$check_for_job_recovery
    (    message: string (*));

  PROCEND osp$check_for_job_recovery;
?? TITLE := 'osp$log_system_error', EJECT ??
  PROCEDURE [XDCL] osp$log_system_error
    (    err_message: string ( * );
         text: string ( * ));

  PROCEND osp$log_system_error;
?? TITLE := 'syp$fetch_system_const_from_ssr', EJECT ??

  PROCEDURE [XDCL] syp$fetch_system_const_from_ssr
    (VAR status: ost$status);

    status.normal := TRUE;

  PROCEND syp$fetch_system_const_from_ssr;
?? TITLE := 'syp$save_system_const_in_ssr', EJECT ??

  PROCEDURE [XDCL] syp$save_system_const_in_ssr
    (VAR status: ost$status);

    status.normal := TRUE;

  PROCEND syp$save_system_const_in_ssr;
?? TITLE := 'syp$set_processor_attributes', EJECT ??
  PROCEDURE [XDCL, #GATE] syp$set_processor_attributes
    (    model_number: integer;
     VAR status: ost$status);

    status.normal := TRUE;

  PROCEND syp$set_processor_attributes;
?? TITLE := 'mmp$os_preallocate_file_space', EJECT ??
  PROCEDURE [XDCL, #GATE] mmp$os_preallocate_file_space
    (    process_virtual_address: ^cell;
         length: ost$segment_length;
         maximum_wait_seconds: integer;
     VAR status: ost$status);

    status.normal := TRUE;

  PROCEND mmp$os_preallocate_file_space;
?? TITLE := 'mmp$mfh_for_segment_manager', EJECT ??
  PROCEDURE [XDCL, #GATE] mmp$mfh_for_segment_manager;

  PROCEND mmp$mfh_for_segment_manager;
MODEND sym$misc_boot_hooks;
