

  PROCEDURE [INLINE] dfp$get_system_core_queue_entry
    (    p_queue_interface_table: dft$p_queue_interface_table;
         queue_index: dft$queue_index;
     VAR queue_entry_index: dft$queue_entry_index;
     VAR p_driver_queue_entry: ^dft$driver_queue_entry;
     VAR p_cpu_queue_entry: ^dft$cpu_queue_entry;
     VAR status: ost$status);

    VAR
      assign_status: dft$assign_queue_entry_status;

    status.normal := TRUE;
    REPEAT
      dfp$assign_queue_entry (p_queue_interface_table, queue_index,
            dfc$task_services, queue_entry_index, assign_status);
      IF assign_status = dfc$aqes_server_terminated THEN
        dfp$set_terminated_status (p_queue_interface_table, queue_index,
            status);
        RETURN;
      IFEND;
      IF assign_status = dfc$aqes_no_available_entries THEN
        pmp$delay (1000, status);
        IF NOT status.normal THEN
          RETURN;
        IFEND;
      IFEND;
    UNTIL (assign_status <> dfc$aqes_no_available_entries);

    IF assign_status <> dfc$aqes_entry_assigned THEN
      IF assign_status = dfc$aqes_server_terminated THEN
        dfp$set_terminated_status (p_queue_interface_table, queue_index,
            status);
      ELSE
        osp$set_status_abnormal (dfc$file_server_id,
              dfe$unable_to_assign_q_entry, ' ', status);
        osp$append_status_integer (osc$status_parameter_delimiter,
              $INTEGER (assign_status), 10, FALSE, status);
      IFEND;
      RETURN;
    IFEND;
    dfp$fetch_queue_entry (p_queue_interface_table, queue_index,
          queue_entry_index, p_driver_queue_entry, p_cpu_queue_entry);
  PROCEND dfp$get_system_core_queue_entry;
?? PUSH (LISTEXT := ON) ??
*copyc dfd$driver_queue_types
*copyc dfe$error_condition_codes
*copyc dfp$assign_queue_entry
*copyc dfp$fetch_queue_entry
*copyc dfp$set_terminated_status
*copyc osp$set_status_abnormal
*copyc osp$append_status_integer
*copyc ost$status
*copyc pmp$delay
?? POP ??

