
  TYPE
    pmt$queue_connection = 1 .. pmc$max_queues_per_job,

    pmt$queue_name = ost$name,

    pmt$message = record
      sender_id: pmt$task_id, { set by pmp$send_to_queue }
      sender_ring: ost$ring, { set by pmp$send_to_queue }
      case contents: pmt$message_kind of
      = pmc$message_value =
        value: pmt$message_value,
      = pmc$passed_segments, pmc$shared_segments = {* not supported in R1}
        number_of_segments: pmt$segments_per_message,
        segments: array [pmt$segments_per_message] of pmt$queued_segment,
      casend,
    recend,

    pmt$queued_segment = record {* not supported in R1}
      case kind: pmt$queued_segment_kind of
      = pmc$message_pointer =
        pointer: ^cell,
      = pmc$message_heap_pointer =
        heap_pointer: ^HEAP ( * ),
      = pmc$message_sequence_pointer =
        sequence_pointer: ^SEQ ( * ),
      casend,
    recend,

    pmt$segments_per_message = 1 .. pmc$max_segs_per_message,

    pmt$message_kind = (pmc$message_value, pmc$no_message, pmc$passed_segments,
      pmc$shared_segments),

    pmt$message_value = SEQ (REP 1 of pmt$segments_per_message, REP
      pmc$max_segs_per_message of pmt$queued_segment),

    pmt$queued_segment_kind = (pmc$message_pointer, pmc$message_heap_pointer,
      pmc$message_sequence_pointer);

  CONST
    pmc$max_queues_per_job = 255,
    pmc$max_segs_per_message = 12;

  TYPE
    pmt$queues_per_job = 0 .. pmc$max_queues_per_job,

    pmt$connected_tasks_per_queue = 0 .. pmc$max_connected_per_queue,

    pmt$messages_per_queue = 0 .. pmc$max_messages_per_queue;

  CONST
    pmc$max_connected_per_queue = 255,
    pmc$max_messages_per_queue = 100;

*copyc OSD$VIRTUAL_ADDRESS
*copyc OST$NAME
*copyc PMT$TASK_ID
