|
|
DataMuseum.dkPresents historical artifacts from the history of: Rational R1000/400 |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about Rational R1000/400 Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - download
Length: 10209 (0x27e1)
Types: TextFile
Notes: R1k Text-file segment
└─⟦8527c1e9b⟧ Bits:30000544 8mm tape, Rational 1000, Arrival backup of disks in PAM's R1000
└─⟦cfc2e13cd⟧ »Space Info Vol 2«
└─⟦9284b1ca0⟧
└─⟦this⟧
-- 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 => arg: 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 => arg: 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
K_ISR_GET : constant := 40;
-- arg_1 => iv: intr_vector_id_t, returns address
K_ISR_GET_IVT : constant := 41;
-- no arg, returns address
-------------------------------------------------------------------------
-- Pending interrupt services
-------------------------------------------------------------------------
K_PENDING_HANDLE : constant := 42;
-- no arg
-------------------------------------------------------------------------
-- Callout and task storage services
-------------------------------------------------------------------------
K_CALLOUT_INSTALL : constant := 43;
-- arg_1 => event: callout_event_t, arg_2 => proc: address,
-- returns integer
K_TASK_STORAGE_ALLOC : constant := 44;
-- arg_1 => natural, returns task_storage_id
-------------------------------------------------------------------------
-- Name services
-------------------------------------------------------------------------
K_NAME_SERVICES : constant := 45;
-- 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 := 45;
K_USER_SERVICES : constant := 46;
end krn_entries;
package body krn_entries is
end krn_entries