{ DECK: DFT$CPU_QUEUE

  TYPE
    dft$cpu_queue = record
      queue_header: dft$cpu_queue_header,
      queue_entries: dft$cpu_queue_entries,
    recend,

    dft$cpu_queue_entries = array [1 .. * ] of dft$cpu_queue_entry;

  TYPE
    dft$cpu_queue_header = record
      number_of_monitor_queue_entries: 0 .. dfc$max_queue_entries,
      number_of_task_queue_entries: 1 .. dfc$max_queue_entries,
      queue_entry_assignment_table: ALIGNED [0 MOD
            8] string (dfc$queue_assignment_strng_size),
      connection_type: dft$connection_type,
      destination_mainframe_id: pmt$binary_mainframe_id,
      destination_mainframe_name: pmt$mainframe_id,
      leveler_status: jmt$jl_job_leveler_status,
      partner_status: dft$partner_status,
      server_lifetime: dft$server_lifetime,
{     Server_Birthdate is the value of the microsecond clock at the time of
{            Activate_Server command.
      server_birthdate: integer,
{     Timeout_Interval is specified in microseconds.
      timeout_interval: ost$non_negative_integers,
      maximum_request_timeout_count: 0 .. dfc$max_req_timeout_count_value,
      maximum_retransmission_count: 0 .. dfc$max_retransmit_count_value,
      monitor_io: ALIGNED [0 MOD 8] array [dfc$monitor_io .. dfc$monitor_allocate] of record
        number_of_requests: integer,
        total_request_time: integer,
        max_request_time: integer,
      recend,
      transaction_data: ALIGNED [0 MOD 8] dft$transaction_data,
      p_allocated_data_rma_list: dft$p_allocated_data_rma_list,
      p_host_application_info: ^dft$host_application_info,
      p_remote_application_info: ^dft$remote_application_info,
      p_application_rpc_list: ^dft$application_rpc_add_list,
    recend;

  TYPE
    dft$monitor_io_types = (dfc$monitor_io, dfc$monitor_allocate);

  TYPE
    dft$transaction_data = record
      transaction_start_time: ost$date_time,
      total_transaction_count: ALIGNED [0 MOD 8] integer,
      total_buffer_length_sent: ALIGNED [0 MOD 8] integer,
      total_data_pages_sent: ALIGNED [0 MOD 8] integer,
      total_buffer_length_received: ALIGNED [0 MOD 8] integer,
      total_data_pages_received: ALIGNED [0 MOD 8] integer,
    recend;

  CONST
    { Make sure the string is an even number of words to use with compare swap
    { Extra characters should be set to dfc$pad_entry_char
    dfc$queue_assignment_strng_size = ((dfc$max_queue_entries DIV 8) *
          8) + ($INTEGER ((dfc$max_queue_entries MOD 8) > 0) * 8);


  TYPE
    dft$cpu_queue_entry = record
      transaction_count: ALIGNED [0 MOD 8] integer,
{     request_start_time is the value of microsecond clock at the time the
{             request is first submitted.
      request_start_time: integer,
{     last_time_progress_checked is the value of microsecond clock at the
{     time the request progress was last checked at a timeout interval.
      last_time_progress_checked: integer,
      copied_queue_entry_flags: dft$queue_entry_flags,
      transaction_state: dft$transaction_state,
      request_timeout_count: 0 .. dfc$max_req_timeout_count_value,
      retransmission_count: 0 .. dfc$max_retransmit_count_value,
      global_task_id: ost$global_task_id,
      p_send_buffer: dft$p_command_buffer,
      p_receive_buffer: dft$p_command_buffer,
      { The data list must reside within a page }
      p_data_rma_list: dft$p_data_rma_list,
      data_pages_locked: boolean,
      case processor_type: dft$queue_entry_type of
      = dfc$monitor =
        io_id: mmt$io_identifier,
        ajlo: jmt$ajl_ordinal,
        io_type: iot$io_function,
        sfid: gft$system_file_identifier,
        current_request_type: dft$monitor_io_types,
        current_request_time: integer,

        {pointer to server iocb present only on server side.
        p_server_iocb: ^mmt$server_iocb_entry,
      = dfc$task_services =
        { For remote_procedure_call usage only.
        p_send_data: dft$p_send_data,
        p_receive_data: dft$p_send_data,
        total_data_to_receive: dft$send_data_size,
        call_progress: dft$rpc_progress_record,
        case server_to_client: boolean of
        = TRUE =
          remote_procedure_called: boolean,
          p_last_wired_data: ^cell,
          last_wired_length: dft$send_data_size,
        = FALSE =
          maximum_data_sent: dft$send_data_size,
          maximum_data_received: dft$send_data_size,
        casend,
      casend,
    recend;


{ This is the TYPE for the pointer to the data RMA list entries for each queue
{ entry. This list of RMA's resides within the allocated_data_rma_list record.
  TYPE
    dft$p_data_rma_list = ^array [1 .. *] of mmt$rma_list_entry;

{ This is the TYPE for the pointer to the block of RMA list entries for a queue.
{ Space within this block will be devided among the queue's queue_entries.
{ Each queue_entry may be assigned from 4 to dfc$max_rma_list_entries depending
{ on the value of the maximum_data_bytes field of the queue_interface_table, for
{ a given queue_entry these rma_list_entries must not cross a page boundry.
{ Alignment is done to 8192 to assure that the rma list starts on a page
{ boundary, so that each piece of the rma list is contained within ONE page.
{ If file server is to support a page size of > 8192, this alignment may need
{ to change.

  TYPE
    dft$p_allocated_data_rma_list = ^dft$allocated_data_rma_list,
    dft$allocated_data_rma_list = record
      rma_list: ALIGNED [0 MOD 8192] array [1 .. *] of mmt$rma_list_entry,
    recend;



*copyc dfc$esm_allocation_constants
*copyc dfc$poll_constants
*copyc dfd$driver_queue_types
*copyc dft$application_rpc_add_list
*copyc dft$command_buffer
*copyc dft$connection_type
*copyc dft$host_application_info
*copyc dft$entry_type
*copyc dft$partner_status
*copyc dft$queue_entry_type
*copyc dft$queue_index
*copyc dft$remote_application_info
*copyc dft$rpc_parameters
*copyc dft$rpc_procedure_address_list
*copyc dft$rpc_progress_record
*copyc dft$server_lifetime
*copyc dft$server_state
*copyc dft$transaction_state
*copyc gft$system_file_identifier
*copyc iot$io_function
*copyc jmt$ajl_ordinal
*copyc jmt$jl_job_leveler_status
*copyc mmt$io_identifier
*copyc mmt$rma_list
*copyc mmt$server_io_control_block
*copyc osd$integer_limits
*copyc ost$date_time
*copyc ost$global_task_id
*copyc pmt$binary_mainframe_id
*copyc pmt$mainframe_id
*copyc tmt$task_status
