

{ NOS/VE address constants. }


  CONST


    { Ring names. }

    osc$min_ring = 1, { Lowest ring number (most privileged). }
    osc$max_ring = 15, { Highest ring number (least privileged). }
    osc$invalid_ring = 0,
    osc$os_ring_1 = 1, { Reserved for Operating System. }
    osc$tmtr_ring = 2, { Task Monitor. }
    osc$tsrv_ring = 3, { Task services. }
    osc$sj_ring_1 = 4, { Reserved for system job. }
    osc$sj_ring_2 = 5,
    osc$sj_ring_3 = 6,
    osc$application_ring_1 = 7, { Reserved for application subsystems.}
    osc$application_ring_2 = 8,
    osc$application_ring_3 = 9,
    osc$application_ring_4 = 10,
    osc$user_ring = 11, { Standard user task. }
    osc$user_ring_1 = 12, { Reserved for user...O.S. requests available.}
    osc$user_ring_2 = 13,
    osc$user_ring_3 = 14, { Reserved for user...O.S. requests not available. }
    osc$user_ring_4 = 15;


{ Virtual address space dimensions. }

  CONST
    osc$maximum_segment = 0fff(16),
    osc$maximum_offset = 7fffffff(16),
*IF NOT $true(osv$unix)
    osc$max_segment_length = osc$maximum_offset + 1;
*ELSE
    osc$max_segment_length = osc$maximum_offset;
*IFEND


{ Global-local key lock definition. }

  TYPE
    ost$key_lock = packed record
      global: boolean, { True if value is global key. }
      local: boolean, { True if value is local key. }
      value: ost$key_lock_value, { Key or lock value. }
    recend,

    ost$key_lock_value = 0 .. 3f(16),


    { CYBER 180 forty eight bit PVA definition. }

    ost$ring = osc$invalid_ring .. osc$max_ring, { Ring number. }
    ost$valid_ring = osc$min_ring .. osc$max_ring, { Valid Ring Number. }
    ost$segment = 0 .. osc$maximum_segment, { Segment number. }
    ost$segment_offset = - (osc$maximum_offset + 1) .. osc$maximum_offset,
    ost$valid_segment_offset = 0 .. osc$maximum_offset,

    ost$segment_length = 0 .. osc$max_segment_length,

    ost$relative_pointer = - 7fffffff(16) .. 7fffffff(16),
    ost$valid_relative_pointer = 0 .. 7fffffff(16),

    ost$pva = packed record
      ring: ost$ring,
      seg: ost$segment,
      offset: ost$segment_offset,
    recend;
