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

⟦f1b9a411b⟧ TextFile

    Length: 10209 (0x27e1)
    Types: TextFile
    Notes: R1k Text-file segment

Derivation

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

TextFile

-- 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