
  PROCEDURE [INLINE] dfp$await_server_subsystem
    (    p_queue_interface_table: dft$p_queue_interface_table;
         queue_index: dft$queue_index;
         p_driver_queue_entry: ^dft$driver_queue_entry);

    CONST
      { Time in milliseconds
      requested_time = 1000,
      expected_time = 100;

    VAR
      p_server_state: ^dft$server_state,
      status: ost$status;

    p_server_state := ^p_queue_interface_table^.queue_directory.
          cpu_queue_pva_directory [queue_index].p_cpu_queue^.queue_header.
          partner_status.server_state;

    REPEAT
      #SPOIL (p_driver_queue_entry^);
      pmp$wait (requested_time, expected_time);
      #SPOIL (p_driver_queue_entry^);
      #SPOIL (p_server_state^);
    UNTIL (p_driver_queue_entry^.flags.subsystem_action) OR
          (p_server_state^ = dfc$terminated);

    IF (p_server_state^ = dfc$terminated) THEN
      osp$set_status_abnormal (dfc$file_server_id, dfe$server_not_active, '',
            status);
      pmp$abort (status);
      RETURN;
    IFEND;

  PROCEND dfp$await_server_subsystem;
?? PUSH (LISTEXT := ON) ??
*copyc dfd$driver_queue_types
*copyc dfe$error_condition_codes
*copyc dft$queue_index
*copyc pmp$abort
*copyc pmp$wait
*copyc osp$set_status_abnormal
?? POP ??
