
{ NOTE:  Align so that the size of array will be 2(number of pools) *
{ 2(size of the descriptor) * maximum number of elements.

  TYPE
    nlt$pp_buffer = record
      pool_header: ALIGNED [0 MOD 80] nlt$pp_buffer_pool_headers,
      pool: array [ nlt$bm_pool_index] of ^nlt$pp_buffer_pool,
    recend,

    nlt$pp_buffer_pool_headers = array [ nlt$bm_pool_index] of nlt$pp_buffer_pool_header,

    nlt$pp_buffer_pool_header = record
      pp_buffer_pool: ALIGNED [4 MOD 8] ost$real_memory_address,
      inn: ALIGNED [6 MOD 8] nlt$pp_buffer_pool_offset,
      cpu_out: ALIGNED [6 MOD 8] nlt$pp_buffer_pool_offset,
      pp_out: ALIGNED [6 MOD 8] nlt$pp_buffer_pool_offset,
      fill1: 0 .. 0ffff(16),
      buffer_length: nlt$bm_buffer_length,
      threshold: 0 .. 0ffff(16),
      limit: nlt$pp_buffer_pool_offset,
    recend,

    nlt$pp_buffer_pool = array [0 .. * ] of nlt$pp_buffer_pool_entry,

    nlt$pp_buffer_pool_entry = record
      pva_fill: 0 .. 0ffff(16),
      descriptor_pva: ^nlt$bm_message_descriptor,
      container_rma: ALIGNED [4 MOD 8] ost$real_memory_address,
    recend,

    nlt$pp_buffer_pool_offset = 0 .. 0ffff(16);

*copyc nlt$bm_message_descriptor
*copyc nlt$bm_pool_index
*copyc nlt$bm_buffer_length
*copyc ost$hardware_subranges
