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

⟦079e194c5⟧ Ada Source

    Length: 13312 (0x3400)
    Types: Ada Source
    Notes: 03_class, FILE, R1k_Segment, e3_tag, package Krn_Entries, seg_04b946

Derivation

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

E3 Source Code



-- Copyright 1991, 1993 Verdix Corporation

with System;
use System;
with Krn_Defs;
use Krn_Defs;
with Link_Block;
with Unchecked_Conversion;
package Krn_Entries is

    pragma Suppress (All_Checks);
    pragma Suppress (Exception_Tables);
    pragma Not_Elaborated;
    pragma Local_Access;

    -- Kernel service entry IDs and arguments

    K_Invalid : constant := 0;

    -------------------------------------------------------------------------
    -- Program services
    -------------------------------------------------------------------------
    K_Program_Init : constant := 1;
    -- arg_1 =>\x09arg: a_program_init_arg_t
    type Program_Init_Arg_T is
        record
            Usr_Link_Block : Link_Block.A_Link_Block_T;
            -- link_block has pointers to stack_limit,
            -- raise_interrupt_exception, predefined Ada exceptions,
            -- main_task_priority.

            -- Values for the following parameters were extracted from the
            -- user's configuration table or were set via pragmas in the
            -- main procedure
            Main_Stack_Size : Natural;
            Main_Prio : Priority;
            Exception_Stack_Size : Natural;
            Idle_Stack_Size : Natural;

            Main_Stack_Area : Address;
        end record;
    type A_Program_Init_Arg_T is access Program_Init_Arg_T;
    function To_A_Program_Init_Arg_T is
       new Unchecked_Conversion (Address, A_Program_Init_Arg_T);
    K_Program_Exit : constant := 2;
    -- arg_1 => status: integer
    K_Program_Diagnostic : constant := 3;
    -- arg_1 => s_a: address, arg_2 => s_len: natural
    K_Program_Start : constant := 4;
    -- arg_1 =>\x09arg: a_program_start_arg_t, returns a_krn_pcb_t
    type Program_Start_Arg_T is
        record
            Usr_Link_Block : Link_Block.A_Link_Block_T;
            Key : Address;
            Terminate_Callout : Address;
            Ada_Program_Id : Program_Id;
        end record;
    type A_Program_Start_Arg_T is access Program_Start_Arg_T;
    function To_A_Program_Start_Arg_T is
       new Unchecked_Conversion (Address, A_Program_Start_Arg_T);
    K_Program_Terminate : constant := 5;
    -- arg_1 => prg: a_krn_pcb_t, arg_2 => status: integer
    K_Program_Set_Is_Server : constant := 6;
    -- no arg

    -------------------------------------------------------------------------
    -- Task services
    -------------------------------------------------------------------------
    K_Task_Set_Priority : constant := 7;
    -- arg_1 => t: a_krn_tcb_t, arg_2 => prio: priority
    K_Task_Create : constant := 8;
    -- arg_1 => arg: a_task_create_arg_t, returns a_krn_tcb_t
-- SPORADIC_TASK
    type Sporadic_Create_Arg_T is
        record
            Low_Prio : Priority;
            Replenish_Period : Duration;
            Initial_Budget : Duration;
            Min_Replenishment : Duration;
            Replenishment_Count : Natural;
        end record;
    type A_Sporadic_Create_Arg_T is access Sporadic_Create_Arg_T;
    function To_A_Sporadic_Create_Arg_T is
       new Unchecked_Conversion (Address, A_Sporadic_Create_Arg_T);
-- SPORADIC_TASK
    type Task_Create_Arg_T is
        record
            Prio : Priority;
            Stack_Size : Natural;
            Start : Address;
            Ada_Task_Id : Task_Id;
-- SPORADIC_TASK
            Sporadic_Arg : A_Sporadic_Create_Arg_T;
            -- null indicates a normal, non-sporadic task
-- SPORADIC_TASK
        end record;
    type A_Task_Create_Arg_T is access Task_Create_Arg_T;
    function To_A_Task_Create_Arg_T is
       new Unchecked_Conversion (Address, A_Task_Create_Arg_T);
    K_Task_Activate : constant := 9;
    -- arg_1 => t: a_krn_tcb_t
    K_Task_Terminate : constant := 10;
    -- arg_1 => t: a_krn_tcb_t
    K_Task_Suspend : constant := 11;
    -- arg_1 => t: a_krn_tcb_t
    K_Task_Resume : constant := 12;
    -- arg_1 => t: a_krn_tcb_t
    K_Task_Get_Supervisor_State : constant := 13;
    -- returns boolean (TRUE if current task is in supervisor state)
    K_Task_Enter_Supervisor_State : constant := 14;
    -- no args
    K_Task_Leave_Supervisor_State : constant := 15;
    -- no args
    K_Task_Wait : constant := 16;
    -- no args
    K_Task_Timed_Wait : constant := 17;
    -- arg_1 => sec: duration, returns boolean
    K_Task_Signal : constant := 18;
    -- arg_1 => t: a_krn_tcb_t
    K_Task_Signal_Unlock : constant := 19;
    -- arg_1 => t: a_krn_tcb_t, arg_2 => mutex: a_mutex_t
    K_Task_Signal_Wait_Unlock : constant := 20;
    -- arg_1 => t: a_krn_tcb_t, arg_2 => mutex: a_mutex_t

    -------------------------------------------------------------------------
    -- Kernel scheduling services
    -------------------------------------------------------------------------
    K_Kernel_Set_Time_Slicing_Enabled : constant := 21;
    -- arg_1 => new_value: boolean
    K_Kernel_Get_Time_Slicing_Enabled : constant := 22;
    -- returns boolean

    -------------------------------------------------------------------------
    -- Time services
    -------------------------------------------------------------------------
    K_Time_Set : constant := 23;
    -- arg_1 => arg: a_time_set_arg_t
    type Time_Set_Arg_T is
        record
            Day : Day_T;
            Sec : Duration;
            Timer_Support_Arg : Address;
        end record;
    type A_Time_Set_Arg_T is access Time_Set_Arg_T;
    function To_A_Time_Set_Arg_T is
       new Unchecked_Conversion (Address, A_Time_Set_Arg_T);
    K_Time_Get : constant := 24;
    -- arg_1 => arg: a_time_get_arg_t
    type Time_Get_Arg_T is
        record
            Day : Day_T;
            Sec : Duration;
        end record;
    type A_Time_Get_Arg_T is access Time_Get_Arg_T;
    function To_A_Time_Get_Arg_T is
       new Unchecked_Conversion (Address, A_Time_Get_Arg_T);
    K_Time_Delay : constant := 25;
    -- arg_1 => day: day_t, arg_2 => sec: duration
    Delta_Delay : constant Day_T := -1;

    -------------------------------------------------------------------------
    -- Mutex services
    -------------------------------------------------------------------------
    K_Mutex_Lock : constant := 26;
    -- arg_1 => mutex: a_mutex_t
    K_Mutex_Unlock : constant := 27;
    -- arg_1 => mutex: a_mutex_t
    K_Cond_Wait : constant := 28;
    -- arg_1 => cond: a_cond_t, arg_2 => mutex: a_mutex_t
    K_Cond_Timed_Wait : constant := 29;
    -- arg_1 => arg: a_cond_timed_wait_arg_t, returns boolean
    type Cond_Timed_Wait_Arg_T is
        record
            Cond : A_Cond_T;
            Mutex : A_Mutex_T;
            Sec : Duration;
        end record;
    type A_Cond_Timed_Wait_Arg_T is access Cond_Timed_Wait_Arg_T;
    function To_A_Cond_Timed_Wait_Arg_T is
       new Unchecked_Conversion (Address, A_Cond_Timed_Wait_Arg_T);
    K_Cond_Signal : constant := 30;
    -- arg_1 => cond: a_cond_t
    K_Cond_Broadcast : constant := 31;
    -- arg_1 => cond: a_cond_t

    -------------------------------------------------------------------------
    -- Mutex service combinations
    -------------------------------------------------------------------------
    K_Cond_Signal_Unlock : constant := 32;
    -- arg_1 => cond: a_cond_t, arg_2 => mutex: a_mutex_t

    -------------------------------------------------------------------------
    -- Semaphore services
    -------------------------------------------------------------------------
    K_Semaphore_Wait : constant := 33;
    -- arg_1 => s: a_semaphore_t
    K_Semaphore_Timed_Wait : constant := 34;
    -- arg_1 => s: a_semaphore_t, arg_2 => sec: duration, returns boolean
    K_Semaphore_Signal : constant := 35;
    -- arg_1 => s: a_semaphore_t

    -------------------------------------------------------------------------
    -- Allocation services
    -------------------------------------------------------------------------
    K_Alloc : constant := 36;
    -- arg_1 => size: natural, returns address
    K_Free : constant := 37;
    -- arg_1 => a: address

    -------------------------------------------------------------------------
    -- Interrupt services
    -------------------------------------------------------------------------
    K_Isr_Attach : constant := 38;
    -- arg_1 => iv: intr_vector_id_t, arg_2 => isr: address, returns address
    K_Isr_Detach : constant := 39;
    -- arg_1 => iv: intr_vector_id_t, returns address

    -------------------------------------------------------------------------
    -- Pending interrupt services
    -------------------------------------------------------------------------
    K_Pending_Handle : constant := 40;
    -- no arg

    -------------------------------------------------------------------------
    -- Callout and task storage services
    -------------------------------------------------------------------------
    K_Callout_Install : constant := 41;
    -- arg_1 => event: callout_event_t, arg_2 => proc: address,
    -- returns integer
    K_Task_Storage_Alloc : constant := 42;
    -- arg_1 => natural, returns task_storage_id

    -------------------------------------------------------------------------
    -- Name services
    -------------------------------------------------------------------------
    K_Name_Services : constant := 43;
    -- arg_1 => srv: k_name_srv_t,
    -- arg_2 => arg: a_k_name_bind_arg_t | a_k_name_resolve_arg_t

    type K_Name_Srv_T is (K_Name_Bind, K_Name_Resolve);
    for K_Name_Srv_T'Size use Integer'Size;

    type K_Name_Bind_Status_T is
       (K_Name_Bind_Ok, K_Name_Bind_Out_Of_Memory, K_Name_Bind_Already_Bound);

    type K_Name_Resolve_Status_T is
       (K_Name_Resolve_Ok, K_Name_Resolve_Timed_Out, K_Name_Resolve_Failed);

    type K_Name_Bind_Arg_T is
        record
            Name_Len : Natural;
            Name_Addr : Address;
            Prg : A_Krn_Pcb_T;
            Addr : Address;
            Status : K_Name_Bind_Status_T;  -- out
        end record;
    type A_K_Name_Bind_Arg_T is access K_Name_Bind_Arg_T;
    function To_A_K_Name_Bind_Arg_T is
       new Unchecked_Conversion (Address, A_K_Name_Bind_Arg_T);
    function To_Address is new Unchecked_Conversion
                                  (A_K_Name_Bind_Arg_T, Address);

    type K_Name_Resolve_Arg_T is
        record
            Name_Len : Natural;
            Name_Addr : Address;
            Wait_Time : Duration;
            Prg : A_Krn_Pcb_T;    -- out
            Addr : Address;     -- out
            Status : K_Name_Resolve_Status_T; -- out
        end record;
    type A_K_Name_Resolve_Arg_T is access K_Name_Resolve_Arg_T;
    function To_A_K_Name_Resolve_Arg_T is
       new Unchecked_Conversion (Address, A_K_Name_Resolve_Arg_T);
    function To_Address is new Unchecked_Conversion
                                  (A_K_Name_Resolve_Arg_T, Address);


    K_Last : constant := 43;
    K_User_Services : constant := 44;

end Krn_Entries;

E3 Meta Data

    nblk1=c
    nid=0
    hdr6=18
        [0x00] rec0=21 rec1=00 rec2=01 rec3=078
        [0x01] rec0=18 rec1=00 rec2=02 rec3=044
        [0x02] rec0=18 rec1=00 rec2=03 rec3=02a
        [0x03] rec0=1a rec1=00 rec2=04 rec3=034
        [0x04] rec0=17 rec1=00 rec2=05 rec3=028
        [0x05] rec0=1b rec1=00 rec2=06 rec3=052
        [0x06] rec0=18 rec1=00 rec2=07 rec3=05c
        [0x07] rec0=16 rec1=00 rec2=08 rec3=092
        [0x08] rec0=17 rec1=00 rec2=09 rec3=02a
        [0x09] rec0=18 rec1=00 rec2=0a rec3=00c
        [0x0a] rec0=19 rec1=00 rec2=0b rec3=05e
        [0x0b] rec0=09 rec1=00 rec2=0c rec3=000
    tail 0x21750b87486843527853c 0x42a00088462060003