DataMuseum.dk

Presents historical artifacts from the history of:

Rational R1000/400

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about Rational R1000/400

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - download

⟦4d758ec73⟧ Ada Source

    Length: 30720 (0x7800)
    Types: Ada Source
    Notes: 03_class, FILE, R1k_Segment, e3_tag, package Ada_Krn_Defs, seg_04bb62

Derivation

└─⟦8527c1e9b⟧ Bits:30000544 8mm tape, Rational 1000, Arrival backup of disks in PAM's R1000
    └─ ⟦5a81ac88f⟧ »Space Info Vol 1« 
        └─⟦this⟧ 

E3 Source Code



-- Copyright 1991 Verdix Corporation

with System;
use System;
with Unchecked_Conversion;
with Krn_Defs;
package Ada_Krn_Defs is
    pragma Suppress (All_Checks);
    pragma Suppress (Exception_Tables);
    pragma Not_Elaborated;
    pragma Local_Access;

    --------------------------------------------------------------------------
    -- Ada kernel type definitions for VADS_MICRO/RS6000
    --------------------------------------------------------------------------

    -- Kernel's task id (OS DEPENDENT)
    subtype Krn_Task_Id is Krn_Defs.A_Krn_Tcb_T;
--    NO_KRN_TASK_ID: constant krn_task_id := null;
    function No_Krn_Task_Id return Krn_Task_Id;
    pragma Inline_Only (No_Krn_Task_Id);

    -- Kernel's program id (OS DEPENDENT)
    subtype Krn_Program_Id is Krn_Defs.A_Krn_Pcb_T;
--    NO_KRN_PROGRAM_ID: constant krn_program_id := null;
    function No_Krn_Program_Id return Krn_Program_Id;
    pragma Inline_Only (No_Krn_Program_Id);


    --------------------------------------------------------------------------
    -- Interrupt types (OS DEPENDENT)
    --------------------------------------------------------------------------
    -- Interrupt Vector ID's. For Unix: signal number.
    subtype Intr_Vector_Id_T is Krn_Defs.Intr_Vector_Id_T;

    -- Interrupt enable/disable status. For SYSV: sigset_t mask
    subtype Intr_Status_T is Krn_Defs.Intr_Status_T;

    -- All the asynchronous signals disabled
    Disable_Mask : constant Integer := Krn_Defs.Disable_Mask;
    Disable_33_64_Mask : constant Integer := Krn_Defs.Disable_33_64_Mask;
--    DISABLE_INTR_STATUS\x09: constant intr_status_t :=
--\x09\x09(DISABLE_MASK, DISABLE_33_64_MASK, others => 0);
    function Disable_Intr_Status return Intr_Status_T;
    pragma Inline_Only (Disable_Intr_Status);

    -- All signals enabled
    Enable_Mask : constant Integer := Krn_Defs.Enable_Mask;
    Enable_33_64_Mask : constant Integer := Krn_Defs.Enable_33_64_Mask;-    ENABLE_INTR_STATUS\x09: constant intr_status_t :=
--\x09\x09(ENABLE_MASK, ENABLE_33_64_MASK, others => 0);
    function Enable_Intr_Status return Intr_Status_T;
    pragma Inline_Only (Enable_Intr_Status);

    -- Value return for a bad intr_vector passed to the interrupt
    -- service routines
    Bad_Intr_Vector : constant Address := Krn_Defs.Bad_Intr_Vector;


    --------------------------------------------------------------------------
    -- Interrupt entry types
    --------------------------------------------------------------------------
    -- This record type is used for interrupt entries
    type Intr_Entry_T is
        record
            Intr_Vector :
               Intr_Vector_Id_T; -- this field is referenced by Ada rts
            Prio : Priority;         -- this field is referenced by Ada rts
        end record;
    type A_Intr_Entry_T is access Intr_Entry_T;
    function To_A_Intr_Entry_T is
       new Unchecked_Conversion (Address, A_Intr_Entry_T);
    function To_Address is new Unchecked_Conversion (A_Intr_Entry_T, Address);

    --------------------------------------------------------------------------
    -- intr_entry_t: init subprograms
    --------------------------------------------------------------------------
    procedure Intr_Entry_Init (Intr_Entry : A_Intr_Entry_T;
                               Intr_Vector : Intr_Vector_Id_T;
                               Prio : Priority := Priority'Last);
    function Intr_Entry_Init (Intr_Entry : A_Intr_Entry_T;
                              Intr_Vector : Intr_Vector_Id_T;
                              Prio : Priority := Priority'Last) return Address;
    function Intr_Entry_Init
                (
                 -- does an implicit "intr_entry: a_intr_entry_t := new intr_entry_t;"
                 Intr_Vector : Intr_Vector_Id_T;
                 Prio : Priority := Priority'Last)
                return Address;
    pragma Inline_Only (Intr_Entry_Init);


    --------------------------------------------------------------------------
    -- Condition variable and mutex types
    --------------------------------------------------------------------------
    subtype Cond_Attr_T is Krn_Defs.Cond_Attr_T;
    subtype A_Cond_Attr_T is Krn_Defs.A_Cond_Attr_T;
    function To_A_Cond_Attr_T is
       new Unchecked_Conversion (Address, A_Cond_Attr_T);
    function To_Address is new Unchecked_Conversion (A_Cond_Attr_T, Address);

    subtype Cond_T is Krn_Defs.Cond_T;
    subtype A_Cond_T is Krn_Defs.A_Cond_T;
    function To_A_Cond_T is new Unchecked_Conversion (Address, A_Cond_T);
    function To_Address is new Unchecked_Conversion (A_Cond_T, Address);

    subtype Mutex_Attr_T is Krn_Defs.Mutex_Attr_T;
    subtype A_Mutex_Attr_T is Krn_Defs.A_Mutex_Attr_T;
    function To_A_Mutex_Attr_T is
       new Unchecked_Conversion (Address, A_Mutex_Attr_T);
    function To_Address is new Unchecked_Conversion (A_Mutex_Attr_T, Address);

    subtype Intr_Attr_T is Krn_Defs.Intr_Attr_T;
    subtype A_Intr_Attr_T is Krn_Defs.A_Intr_Attr_T;
    function To_A_Intr_Attr_T is
       new Unchecked_Conversion (Address, A_Intr_Attr_T);
    function To_A_Intr_Attr_T is new Unchecked_Conversion
                                        (A_Mutex_Attr_T, A_Intr_Attr_T);
    function To_A_Mutex_Attr_T is new Unchecked_Conversion
                                         (A_Intr_Attr_T, A_Mutex_Attr_T);
    function To_Address is new Unchecked_Conversion (A_Intr_Attr_T, Address);

    subtype Prio_Ceiling_Attr_T is Krn_Defs.Prio_Ceiling_Attr_T;
    subtype A_Prio_Ceiling_Attr_T is Krn_Defs.A_Prio_Ceiling_Attr_T;
    function To_A_Prio_Ceiling_Attr_T is
       new Unchecked_Conversion (Address, A_Prio_Ceiling_Attr_T);
    function To_A_Prio_Ceiling_Attr_T is
       new Unchecked_Conversion (A_Mutex_Attr_T, A_Prio_Ceiling_Attr_T);
    function To_A_Mutex_Attr_T is
       new Unchecked_Conversion (A_Prio_Ceiling_Attr_T, A_Mutex_Attr_T);
    function To_Address is new Unchecked_Conversion
                                  (A_Prio_Ceiling_Attr_T, Address);

    subtype Mutex_T is Krn_Defs.Mutex_T;
    subtype A_Mutex_T is Krn_Defs.A_Mutex_T;
    function To_A_Mutex_T is new Unchecked_Conversion (Address, A_Mutex_T);
    function To_Address is new Unchecked_Conversion (A_Mutex_T, Address);

    subtype Intr_Mutex_T is Krn_Defs.Intr_Mutex_T;
    subtype A_Intr_Mutex_T is Krn_Defs.A_Intr_Mutex_T;
    function To_A_Intr_Mutex_T is
       new Unchecked_Conversion (A_Mutex_T, A_Intr_Mutex_T);
    function To_A_Mutex_T is new Unchecked_Conversion
                                    (A_Intr_Mutex_T, A_Mutex_T);
    function To_Address is new Unchecked_Conversion (A_Intr_Mutex_T, Address);

    --------------------------------------------------------------------------
    -- cond_attr_t: DEFAULT and init subprograms
    --------------------------------------------------------------------------
    function Default_Cond_Attr return A_Cond_Attr_T;
    pragma Inline_Only (Default_Cond_Attr);

    procedure Fifo_Cond_Attr_Init (Attr : A_Cond_Attr_T);
    function Fifo_Cond_Attr_Init (Attr : A_Cond_Attr_T) return A_Cond_Attr_T;
    function Fifo_Cond_Attr_Init return A_Cond_Attr_T;
    -- does an implicit "attr: a_cond_attr_t := new cond_attr_t;"
    pragma Inline_Only (Fifo_Cond_Attr_Init);

    procedure Prio_Cond_Attr_Init (Attr : A_Cond_Attr_T);
    function Prio_Cond_Attr_Init (Attr : A_Cond_Attr_T) return A_Cond_Attr_T;
    function Prio_Cond_Attr_Init return A_Cond_Attr_T;
    -- does an implicit "attr: a_cond_attr_t := new cond_attr_t;"
    pragma Inline_Only (Prio_Cond_Attr_Init);

    --------------------------------------------------------------------------
    -- mutex_attr_t: DEFAULT and init subprograms
    --------------------------------------------------------------------------
    function Default_Mutex_Attr return A_Mutex_Attr_T;
    function Default_Mutex_Attr return Address;
    pragma Inline_Only (Default_Mutex_Attr);

    function Default_Intr_Attr return A_Mutex_Attr_T;
    function Default_Intr_Attr return Address;
    pragma Inline_Only (Default_Intr_Attr);

    procedure Fifo_Mutex_Attr_Init (Attr : A_Mutex_Attr_T);
    function Fifo_Mutex_Attr_Init (Attr : A_Mutex_Attr_T) return A_Mutex_Attr_T;
    function Fifo_Mutex_Attr_Init (Attr : A_Mutex_Attr_T) return Address;
    function Fifo_Mutex_Attr_Init return A_Mutex_Attr_T;
    -- does an implicit "attr: a_mutex_attr_t := new mutex_attr_t;"
    function Fifo_Mutex_Attr_Init return Address;
    -- does an implicit "attr: a_mutex_attr_t := new mutex_attr_t;"
    pragma Inline_Only (Fifo_Mutex_Attr_Init);

    procedure Prio_Mutex_Attr_Init (Attr : A_Mutex_Attr_T);
    function Prio_Mutex_Attr_Init (Attr : A_Mutex_Attr_T) return A_Mutex_Attr_T;
    function Prio_Mutex_Attr_Init (Attr : A_Mutex_Attr_T) return Address;
    function Prio_Mutex_Attr_Init return A_Mutex_Attr_T;
    -- does an implicit "attr: a_mutex_attr_t := new mutex_attr_t;"
    function Prio_Mutex_Attr_Init return Address;
    -- does an implicit "attr: a_mutex_attr_t := new mutex_attr_t;"
    pragma Inline_Only (Prio_Mutex_Attr_Init);

    procedure Prio_Inherit_Mutex_Attr_Init (Attr : A_Mutex_Attr_T);
    function Prio_Inherit_Mutex_Attr_Init
                (Attr : A_Mutex_Attr_T) return A_Mutex_Attr_T;
    function Prio_Inherit_Mutex_Attr_Init
                (Attr : A_Mutex_Attr_T) return Address;
    function Prio_Inherit_Mutex_Attr_Init return A_Mutex_Attr_T;
    -- does an implicit "attr: a_mutex_attr_t := new mutex_attr_t;"
    function Prio_Inherit_Mutex_Attr_Init return Address;
    -- does an implicit "attr: a_mutex_attr_t := new mutex_attr_t;"
    pragma Inline_Only (Prio_Inherit_Mutex_Attr_Init);
    -- If the archive linked by the application doesn't support
    -- priority inheritance or if the CIFO
    -- "pragma SET_PRIORITY_INHERITANCE_CRITERIA" isn't defined in
    -- the main procedure, then, raises PROGRAM_ERROR exception.
    --
    -- The priority inheritance protocol is only supported in the CIFO
    -- add-on product.

    procedure Prio_Ceiling_Mutex_Attr_Init
                 (Attr : A_Mutex_Attr_T;
                  Ceiling_Prio : Priority := Priority'Last);
    function Prio_Ceiling_Mutex_Attr_Init
                (Attr : A_Mutex_Attr_T;
                 Ceiling_Prio : Priority := Priority'Last)
                return A_Mutex_Attr_T;
    function Prio_Ceiling_Mutex_Attr_Init
                (Attr : A_Mutex_Attr_T;
                 Ceiling_Prio : Priority := Priority'Last) return Address;
    function Prio_Ceiling_Mutex_Attr_Init
                (
                 -- does an implicit "attr: a_mutex_attr_t := new mutex_attr_t;"
                 Ceiling_Prio : Priority := Priority'Last)
                return A_Mutex_Attr_T;
    function Prio_Ceiling_Mutex_Attr_Init
                (
                 -- does an implicit "attr: a_mutex_attr_t := new mutex_attr_t;"
                 Ceiling_Prio : Priority := Priority'Last)
                return Address;
    pragma Inline_Only (Prio_Ceiling_Mutex_Attr_Init);
    -- If the archive linked by the application doesn't support
    -- the priority ceiling protocol, then, raises PROGRAM_ERROR exception.
    --
    -- The priority ceiling protocol is only supported in the CIFO
    -- add-on product.

    procedure Intr_Attr_Init
                 (Attr : A_Mutex_Attr_T;
                  Disable_Status : Intr_Status_T := Disable_Intr_Status);
    function Intr_Attr_Init
                (Attr : A_Mutex_Attr_T;
                 Disable_Status : Intr_Status_T := Disable_Intr_Status)
                return A_Mutex_Attr_T;
    function Intr_Attr_Init
                (Attr : A_Mutex_Attr_T;
                 Disable_Status : Intr_Status_T := Disable_Intr_Status)
                return Address;
    function Intr_Attr_Init
                (
                 -- does an implicit "attr: a_mutex_attr_t := new mutex_attr_t;"
                 Disable_Status : Intr_Status_T := Disable_Intr_Status)
                return A_Mutex_Attr_T;
    function Intr_Attr_Init
                (
                 -- does an implicit "attr: a_mutex_attr_t := new mutex_attr_t;"
                 Disable_Status : Intr_Status_T := Disable_Intr_Status)
                return Address;
    pragma Inline_Only (Intr_Attr_Init);


    --------------------------------------------------------------------------
    -- Task attribute types
    --------------------------------------------------------------------------
    -- This record type is used for passing OS specific task information
    -- at task create.
    --
    -- Note: the priority in the task_attr_t record takes precedence over
    -- that specified by "pragma priority()".
    --
    -- The prio and cond_attr_address fields are referenced by the Ada rts.
    --
    -- The mutex_attr_address is the address of a mutex_attr_t record.
    -- The cond_attr_address is the address of a cond_attr_t record. Setting
    -- these fields to NO_ADDR selects the default values specified
    -- by the DEFAULT_TASK_ATTRIBUTES parameter in v_usr_conf's
    -- configuration_table.
    --
    -- The sporadic_attr_address is the address of a sporadic_attr_t
    -- record. Setting sporadic_attr_address to NO_ADDR selects the
    -- normal, non-sporadic task. A sporadic task is only supported
    -- in the CIFO add-on product.
    type Task_Attr_T is
        record
            Prio : Priority;
            Sporadic_Attr_Address : Address := No_Addr;
            Mutex_Attr_Address : Address := No_Addr;
            Cond_Attr_Address : Address := No_Addr;
        end record;
    type A_Task_Attr_T is access Task_Attr_T;
    function To_A_Task_Attr_T is
       new Unchecked_Conversion (Address, A_Task_Attr_T);
    function To_Address is new Unchecked_Conversion (A_Task_Attr_T, Address);

    -- Sporadic task attributes.
    --
    -- If the Ada task is to be sporadic, then,
    -- the sporadic_attr_address field in the task_attr_t record
    -- points to a sporadic_attr_t record.
    --
    -- Here's an overview of the fields in the sporadic_attr_t record:
    --
    -- If the available execution capacity is greater than
    -- zero, then, the sporadic task's normal Ada priority is used; otherwise,
    -- the priority specified by the low_prio field is used.
    --
    -- The replenish_period field specifies the sporadic task's
    -- period. Its the amount of time to wait before the sporadic task's
    -- consumed execution time is replenished.
    --
    -- The initial_budget field specifies the maximum execution time
    -- in any sporadic task period. The available execution time is
    -- initialized with the initial_budget. When this time is totally consumed,
    -- the task's priority is lowered to low_prio until its replenished.
    --
    -- The last two fields, min_replenishment and replenishment_count,
    -- control how replenishments may be combined so as to reduce the number
    -- of replenishment timer events.  If the previous replenishment amount
    -- is less than min_replenishment, then, the current replenishment
    -- amount is added to the previous replenishment amount and the time of
    -- the previous replenishment is set to the time of the current
    -- replenishment.  If we already have replenishment_count replenishments,
    -- then, the current replenishment amount is added to the previous
    -- replenishment amount and the time of the previous
    -- replenishment is set to the time of the current replenishment.
    --
    -- Note: sporadic tasks are only supported in the CIFO add-on product.
    type Sporadic_Attr_T is
        record
            Low_Prio : Priority := Priority'First;
            Replenish_Period : Duration := 10.0;
            Initial_Budget : Duration := 2.0;
            Min_Replenishment : Duration := 0.0;
            Replenishment_Count : Natural := 2;
        end record;
    type A_Sporadic_Attr_T is access Sporadic_Attr_T;
    function To_A_Sporadic_Attr_T is
       new Unchecked_Conversion (Address, A_Sporadic_Attr_T);
    function To_Address is new Unchecked_Conversion
                                  (A_Sporadic_Attr_T, Address);

    --------------------------------------------------------------------------
    -- task_attr_t: DEFAULT and init subprograms
    --------------------------------------------------------------------------
    function Default_Task_Attr return A_Task_Attr_T;
    function Default_Task_Attr return Address;
    pragma Inline_Only (Default_Task_Attr);

    procedure Task_Attr_Init (Task_Attr : A_Task_Attr_T;
                              Prio : Priority := Priority'First;
                              Mutex_Attr : A_Mutex_Attr_T := null;
                              Cond_Attr : A_Cond_Attr_T := null);
    function Task_Attr_Init (Task_Attr : A_Task_Attr_T;
                             Prio : Priority := Priority'First;
                             Mutex_Attr : A_Mutex_Attr_T := null;
                             Cond_Attr : A_Cond_Attr_T := null) return Address;
    function Task_Attr_Init
                (
                 -- does an implicit "task_attr: a_task_attr_t := new task_attr_t;"
                 Prio : Priority := Priority'First;
                 Mutex_Attr : A_Mutex_Attr_T := null;
                 Cond_Attr : A_Cond_Attr_T := null)
                return Address;

    procedure Sporadic_Task_Attr_Init (Task_Attr : A_Task_Attr_T;
                                       Sporadic_Attr : A_Sporadic_Attr_T;
                                       Prio : Priority;
                                       Low_Prio : Priority;
                                       Replenish_Period : Duration;
                                       Initial_Budget : Duration;
                                       Min_Replenishment : Duration := 0.0;
                                       Replenishment_Count : Natural := 2;
                                       Mutex_Attr : A_Mutex_Attr_T := null;
                                       Cond_Attr : A_Cond_Attr_T := null);
    function Sporadic_Task_Attr_Init
                (Task_Attr : A_Task_Attr_T;
                 Sporadic_Attr : A_Sporadic_Attr_T;
                 Prio : Priority;
                 Low_Prio : Priority;
                 Replenish_Period : Duration;
                 Initial_Budget : Duration;
                 Min_Replenishment : Duration := 0.0;
                 Replenishment_Count : Natural := 2;
                 Mutex_Attr : A_Mutex_Attr_T := null;
                 Cond_Attr : A_Cond_Attr_T := null) return Address;
    function Sporadic_Task_Attr_Init
                (
                 -- does an implicit "task_attr: a_task_attr_t := new task_attr_t;"
                 -- does an implicit "sporadic_attr: a_sporadic_attr_t :=
                 --\x09\x09\x09\x09\x09\x09\x09\x09\x09\x09\x09new sporadic_attr_t;"
                 Prio : Priority;
                 Low_Prio : Priority;
                 Replenish_Period : Duration;
                 Initial_Budget : Duration;
                 Min_Replenishment : Duration := 0.0;
                 Replenishment_Count : Natural := 2;
                 Mutex_Attr : A_Mutex_Attr_T := null;
                 Cond_Attr : A_Cond_Attr_T := null)
                return Address;
    pragma Inline_Only (Sporadic_Task_Attr_Init);
    -- If the CIFO add-on product archive isn't linked by the application
    -- program, then, raises the PROGRAM_ERROR exception.


    --------------------------------------------------------------------------
    -- Semaphore types
    --------------------------------------------------------------------------
    subtype Semaphore_T is Krn_Defs.Semaphore_T;
    subtype A_Semaphore_T is Krn_Defs.A_Semaphore_T;
    function To_A_Semaphore_T is
       new Unchecked_Conversion (Address, A_Semaphore_T);
    function To_Address is new Unchecked_Conversion (A_Semaphore_T, Address);

    subtype Semaphore_State_T is Krn_Defs.Test_And_Set_T;
    Semaphore_Full : constant Semaphore_State_T := Krn_Defs.Test_And_Set_False;
    Semaphore_Empty : constant Semaphore_State_T := Krn_Defs.Test_And_Set_True;

    subtype Semaphore_Attr_T is Krn_Defs.Semaphore_Attr_T;
    subtype A_Semaphore_Attr_T is Krn_Defs.A_Semaphore_Attr_T;
    function To_A_Semaphore_Attr_T is
       new Unchecked_Conversion (Address, A_Semaphore_Attr_T);
    function To_Address is new Unchecked_Conversion
                                  (A_Semaphore_Attr_T, Address);

    --------------------------------------------------------------------------
    -- semaphore_attr_t: DEFAULT subprogram
    --------------------------------------------------------------------------
    function Default_Semaphore_Attr return A_Semaphore_Attr_T;
    pragma Inline_Only (Default_Semaphore_Attr);


    --------------------------------------------------------------------------
    -- Count semaphore types (VADS EXEC augmentation)
    --------------------------------------------------------------------------
    subtype Count_Semaphore_T is Krn_Defs.Count_Semaphore_T;
    subtype A_Count_Semaphore_T is Krn_Defs.A_Count_Semaphore_T;
    function To_A_Count_Semaphore_T is
       new Unchecked_Conversion (Address, A_Count_Semaphore_T);
    function To_Address is new Unchecked_Conversion
                                  (A_Count_Semaphore_T, Address);

    subtype Count_Semaphore_Attr_T is Ada_Krn_Defs.Mutex_Attr_T;
    subtype A_Count_Semaphore_Attr_T is Ada_Krn_Defs.A_Mutex_Attr_T;
    subtype Count_Intr_Attr_T is Ada_Krn_Defs.Intr_Attr_T;
    subtype A_Count_Intr_Attr_T is Ada_Krn_Defs.A_Intr_Attr_T;
    function To_A_Count_Semaphore_Attr_T is
       new Unchecked_Conversion (Address, A_Count_Semaphore_Attr_T);
    function To_A_Count_Intr_Attr_T is
       new Unchecked_Conversion (Address, A_Count_Intr_Attr_T);
    function To_A_Count_Intr_Attr_T is
       new Unchecked_Conversion (A_Count_Semaphore_Attr_T, A_Count_Intr_Attr_T);
    function To_A_Count_Semaphore_Attr_T is
       new Unchecked_Conversion (A_Count_Intr_Attr_T, A_Count_Semaphore_Attr_T);


    --------------------------------------------------------------------------
    -- count_semaphore_attr_t: DEFAULT and init subprograms
    --------------------------------------------------------------------------
    function Default_Count_Semaphore_Attr return A_Count_Semaphore_Attr_T;
    pragma Inline_Only (Default_Count_Semaphore_Attr);

    function Default_Count_Intr_Attr return A_Count_Semaphore_Attr_T;
    pragma Inline_Only (Default_Count_Intr_Attr);

    procedure Count_Intr_Attr_Init
                 (Attr : A_Count_Semaphore_Attr_T;
                  Disable_Status : Intr_Status_T := Disable_Intr_Status);
    function Count_Intr_Attr_Init
                (Attr : A_Count_Semaphore_Attr_T;
                 Disable_Status : Intr_Status_T := Disable_Intr_Status)
                return A_Count_Semaphore_Attr_T;
    function Count_Intr_Attr_Init
                (
                 -- does an implicit
                 --  "attr: a_count_semaphore_attr_t := new count_semaphore_attr_t;"
                 Disable_Status : Intr_Status_T := Disable_Intr_Status)
                return A_Count_Semaphore_Attr_T;
    pragma Inline_Only (Count_Intr_Attr_Init);


    --------------------------------------------------------------------------
    -- Mailbox types (VADS EXEC augmentation)
    --------------------------------------------------------------------------
    subtype Mailbox_T is Krn_Defs.Mailbox_T;
    subtype A_Mailbox_T is Krn_Defs.A_Mailbox_T;
    function To_A_Mailbox_T is new Unchecked_Conversion (Address, A_Mailbox_T);
    function To_Address is new Unchecked_Conversion (A_Mailbox_T, Address);

    subtype Mailbox_Attr_T is Ada_Krn_Defs.Mutex_Attr_T;
    subtype A_Mailbox_Attr_T is Ada_Krn_Defs.A_Mutex_Attr_T;
    subtype Mailbox_Intr_Attr_T is Ada_Krn_Defs.Intr_Attr_T;
    subtype A_Mailbox_Intr_Attr_T is Ada_Krn_Defs.A_Intr_Attr_T;
    function To_A_Mailbox_Attr_T is
       new Unchecked_Conversion (Address, A_Mailbox_Attr_T);
    function To_A_Mailbox_Intr_Attr_T is
       new Unchecked_Conversion (Address, A_Mailbox_Intr_Attr_T);
    function To_A_Mailbox_Intr_Attr_T is
       new Unchecked_Conversion (A_Mailbox_Attr_T, A_Mailbox_Intr_Attr_T);
    function To_A_Mailbox_Attr_T is
       new Unchecked_Conversion (A_Mailbox_Intr_Attr_T, A_Mailbox_Attr_T);

    --------------------------------------------------------------------------
    -- mailbox_attr_t: DEFAULT and init subprograms
    --------------------------------------------------------------------------
    function Default_Mailbox_Attr return A_Mailbox_Attr_T;
    pragma Inline_Only (Default_Mailbox_Attr);

    function Default_Mailbox_Intr_Attr return A_Mailbox_Attr_T;
    pragma Inline_Only (Default_Mailbox_Intr_Attr);

    procedure Mailbox_Intr_Attr_Init
                 (Attr : A_Mailbox_Attr_T;
                  Disable_Status : Intr_Status_T := Disable_Intr_Status);
    function Mailbox_Intr_Attr_Init
                (Attr : A_Mailbox_Attr_T;
                 Disable_Status : Intr_Status_T := Disable_Intr_Status)
                return A_Mailbox_Attr_T;
    function Mailbox_Intr_Attr_Init
                (
                 -- does an implicit
                 --  "attr: a_mailbox_attr_t := new mailbox_attr_t;"
                 Disable_Status : Intr_Status_T := Disable_Intr_Status)
                return A_Mailbox_Attr_T;
    pragma Inline_Only (Mailbox_Intr_Attr_Init);


    --------------------------------------------------------------------------
    -- Callout and task storage types (VADS EXEC augmentation)
    --------------------------------------------------------------------------

    -- The Ada RTS assumes callout_event_t is an enumeration type
    -- supporting the following program exit events as a minimum:
    --\x09\x09type callout_event_t is (
    --          EXIT_EVENT,
    --          UNEXPECTED_EXIT_EVENT
    --\x09\x09);

    -- Callout events
    type Callout_Event_T is new Krn_Defs.Callout_Event_T;

    -- Id for accessing user defined storage in the task control block
    subtype Task_Storage_Id is Krn_Defs.Task_Storage_Id;
    No_Task_Storage_Id : constant Task_Storage_Id :=
       Krn_Defs.No_Task_Storage_Id;

    --------------------------------------------------------------------------
    -- Name service status types (VADS EXEC augmentation)
    --------------------------------------------------------------------------
    -- Status returned by ada_krn_i.name_bind().
    type Name_Bind_Status_T is
       (Name_Bind_Ok, Name_Bind_Not_Supported, Name_Bind_Bad_Arg,
        Name_Bind_Out_Of_Memory, Name_Bind_Already_Bound);
    for Name_Bind_Status_T'Size use Integer'Size;

    -- Status returned by ada_krn_i.name_resolve().
    type Name_Resolve_Status_T is
       (Name_Resolve_Ok, Name_Resolve_Not_Supported, Name_Resolve_Bad_Arg,
        Name_Resolve_Timed_Out, Name_Resolve_Failed);
    for Name_Resolve_Status_T'Size use Integer'Size;

end Ada_Krn_Defs;

E3 Meta Data

    nblk1=1d
    nid=1d
    hdr6=38
        [0x00] rec0=1f rec1=00 rec2=01 rec3=004
        [0x01] rec0=14 rec1=00 rec2=02 rec3=002
        [0x02] rec0=16 rec1=00 rec2=03 rec3=06a
        [0x03] rec0=12 rec1=00 rec2=04 rec3=052
        [0x04] rec0=15 rec1=00 rec2=05 rec3=094
        [0x05] rec0=13 rec1=00 rec2=06 rec3=060
        [0x06] rec0=13 rec1=00 rec2=07 rec3=088
        [0x07] rec0=13 rec1=00 rec2=08 rec3=06c
        [0x08] rec0=14 rec1=00 rec2=09 rec3=024
        [0x09] rec0=12 rec1=00 rec2=0a rec3=020
        [0x0a] rec0=15 rec1=00 rec2=0b rec3=048
        [0x0b] rec0=16 rec1=00 rec2=0c rec3=02a
        [0x0c] rec0=17 rec1=00 rec2=0d rec3=040
        [0x0d] rec0=15 rec1=00 rec2=0e rec3=052
        [0x0e] rec0=15 rec1=00 rec2=0f rec3=080
        [0x0f] rec0=11 rec1=00 rec2=10 rec3=05e
        [0x10] rec0=15 rec1=00 rec2=11 rec3=01e
        [0x11] rec0=12 rec1=00 rec2=12 rec3=028
        [0x12] rec0=12 rec1=00 rec2=13 rec3=008
        [0x13] rec0=14 rec1=00 rec2=14 rec3=078
        [0x14] rec0=14 rec1=00 rec2=15 rec3=006
        [0x15] rec0=12 rec1=00 rec2=16 rec3=04c
        [0x16] rec0=14 rec1=00 rec2=17 rec3=026
        [0x17] rec0=14 rec1=00 rec2=18 rec3=04c
        [0x18] rec0=13 rec1=00 rec2=19 rec3=008
        [0x19] rec0=17 rec1=00 rec2=1a rec3=006
        [0x1a] rec0=15 rec1=00 rec2=1b rec3=098
        [0x1b] rec0=0f rec1=00 rec2=1c rec3=000
        [0x1c] rec0=0f rec1=00 rec2=1c rec3=000
    tail 0x21548dcbc868472d34f8f 0x42a00088462060003
Free Block Chain:
  0x1d: 0000  00 00 00 04 80 01 20 01 02 00 00 00 00 80 00 01  ┆                ┆