PROCEDURE dum$display_queue_header, display_queue_header, disqh (
  queue_index, qi: integer 1..16 = 1
  p_queue_interface_table, pva: integer 0..281474976710655 = 0
  display_option, do:  key (request_buffer, rb) (esm) (directory) (driver) (cpu) all keyend = all
  output, o: file = $output
  status)

 "  This proc displays the file server queue header.
 "  This proc required RJTs most recent dump analyzer.
 "  This proc assumes that dfm$Monitor_process  has been added.
 "  This proc defaults too the first p_queue_interface_table.
 "  To determine if there is more than one queue interface table DO:
 "    display_queue_summary

  set_file_attributes f=output fc=legible pf=continuous
  out = output.$eoi
  change_default_module m=dfm$monitor_process

  IF p_queue_interface_table = 0 THEN
    IF $nil_pva($program_value(dfv$p_queue_interface_directory)) THEN
      put_line l=' Not using the server ' o=out
      EXIT PROCEDURE
    ELSE  "default to the first queue interface table
      p_queue_interface_table = $program_value(dfv$p_queue_interface_directory^[1].p_queue_interface_table)
    IFEND
  ELSE
    p_queue_interface_table = p_queue_interface_table
  IFEND

  put_line l='1 Display Queue Header' o=out

  display_value v=' Queue index = '//queue_index o=out

  p_cpu_queue = $program_value(?p_queue_interface_table.dft$queue_interface_table..
.queue_directory.cpu_queue_pva_directory[?queue_index].p_cpu_queue)

  p_driver_queue = $program_value(?p_queue_interface_table.dft$queue_interface_table..
.queue_directory.driver_queue_pva_directory[?queue_index].p_driver_queue)

  display_base_system_time (out)

  IF (display_option = ALL) OR (display_option = REQUEST_BUFFER) THEN
    dispv ?p_queue_interface_table.dft$queue_interface_table.request_buffer_directory o=out

    limit = $program_value(?p_queue_interface_table.dft$queue_interface_table.request_buffer_directory.limit)

   p_request_buffer = $program_value(?p_queue_interface_table.dft$queue_interface_table..
.request_buffer_directory.p_request_buffer)

    header_listed = false
    in = 0
    WHILE in < limit DO
      p_request_buffer_entry = p_request_buffer+in
      IF $memory(p_request_buffer_entry, 8) = 0 THEN
        in = in + 8
        " 0 entry found
        CYCLE
      IFEND
      IF NOT header_listed THEN
        put_line l=' Offset P I  QI  QEI'  o=out
        header_listed = true
      IFEND

      " get the fields to display
       IF $program_value(?p_request_buffer_entry.dft$request_buffer_entry.flags.previously_processed) THEN
         prev = 'P'
       ELSE
         prev =  ' '
       IFEND
       IF $program_value(?p_request_buffer_entry.dft$request_buffer_entry.flags.inquiry) THEN
         inqu = 'I'
      "  dispv ?p_request_buffer_entry.dft$request_buffer_entry.inquiry_message o=out
       ELSE
        inqu = ' '
      IFEND
      qi = $strrep($program_value(?p_request_buffer_entry.dft$request_buffer_entry.queue_index))
      qi = $substr(qi,1,3,' ')
      qei = $strrep($program_value(?p_request_buffer_entry.dft$request_buffer_entry.queue_entry_index))
      qei = $substr(qei,1,4,' ')
      index = $substr($strrep(in),1,5,' ')
      outl = '  '//index//' '//prev//' '//inqu//'  '//qi//' '//qei
      put_line l=outl o=out
      in = in + 8
    WHILEND
  IFEND

  IF (display_option = ALL) OR (display_option = ESM) THEN
    put_line l=' ' o=out
    dispv ?p_queue_interface_table.dft$queue_interface_table.esm_base_addresses o=out
  IFEND

  IF (display_option = ALL) OR (display_option = DIRECTORY) THEN
    put_line l=' ' o=out
    dispv ?p_queue_interface_table.dft$queue_interface_table.queue_directory o=out
  IFEND

   q_count = $program_value(?p_queue_interface_table.dft$queue_interface_table..
.queue_directory.number_of_queues)

  IF (display_option = ALL) OR (display_option = CPU) THEN
    put_line l=' ' o=out
    dispv ?p_cpu_queue.dft$cpu_queue.queue_header o=out
  IFEND

  IF (display_option = ALL) OR (display_option = DRIVER) THEN
    put_line l=' ' o=out
    dispv ?p_driver_queue.dft$driver_queue.queue_header o=out
 IFEND

PROCEND dum$display_queue_header
