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

⟦08a840c75⟧ TextFile

    Length: 3271 (0xcc7)
    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« 
        └─⟦9558abbb5⟧ 
            └─⟦this⟧ 

TextFile

-- Copyright 1993 Verdix Corporation

------------------------------------------------------------------------------
-- Interface to the CIFO type definitions used by Ada tasking
------------------------------------------------------------------------------
with system;				use system;
with unchecked_conversion;
package v_i_cifo is
    pragma suppress(ALL_CHECKS);
    pragma suppress(EXCEPTION_TABLES);
    pragma not_elaborated;
    pragma local_access;

	-- Task entry or safe condition variable wait queuing
	type queuing_t is (
		UNSPECIFIED_QUEUING,
		ARBITRARY_QUEUING,
		FIFO_QUEUING,
		PRIORITY_QUEUING,
		PRIORITY_CEILING,
		SPINNING
	);

	-- Do not change these values without also changing the compiler.
	for queuing_t use ( UNSPECIFIED_QUEUING => 0, ARBITRARY_QUEUING => 1, 
		FIFO_QUEUING => 2, PRIORITY_QUEUING => 3, 
		PRIORITY_CEILING => 4, SPINNING => 5 );
	for queuing_t'size use integer'size;


	-- This exception is raised for any priority ceiling errors, such
	-- as, the priority of the calling task is higher than the
	-- priority of a priority ceiling server task.
	PRIORITY_CEILING_ERROR	: exception;


	-- Values set by pragmas in the main procedure

	main_task_priority: priority;
	  pragma interface_name(main_task_priority, "MAIN_TASK_PRIORITY");

	main_priority_inheritance_enabled: integer;
	  pragma interface_name(main_priority_inheritance_enabled,
		"MAIN_PRIORITY_INHERITANCE");
		--  If TRUE, then ARBITRARY_QUEUING is PRIORITY_QUEUING.
		--  Otherwise, ARBITRARY_QUEUING is FIFO_QUEUING.
		--

	main_global_entry_criteria: queuing_t;
	  pragma interface_name(main_global_entry_criteria,
		"MAIN_GLOBAL_ENTRY_CRITERIA");
		--	SPINNING isn't valid.
		--
		--	If set to ARBITRARY_QUEUING, then, it is
		--	updated during startup according to
		--  main_priority_inheritance_enabled as follows:
		--		main_priority_inheritance_enabled = FALSE =>
		--			main_global_entry_criteria := FIFO_QUEUING
		--		main_priority_inheritance_enabled = TRUE =>
		--			main_global_entry_criteria := PRIORITY_QUEUING
		--

	main_global_select_lexical_order: integer;
	  pragma interface_name(main_global_select_lexical_order,
		"MAIN_SELECT_LEXICAL_ORDER");

	type main_pragmas_t is record
		main_task_priority				: priority := priority'first;
		priority_inheritance_enabled	: boolean := FALSE;
		global_entry_criteria			: queuing_t := ARBITRARY_QUEUING;
		global_select_lexical_order		: boolean := FALSE;
	end record;
	type a_main_pragmas_t is access main_pragmas_t;
	function to_a_main_pragmas_t is
	  new unchecked_conversion(address, a_main_pragmas_t);


	-- The following is used for an INTERRUPT_TASK.  The compiler knows
	-- the names of the fields in this record.
	type cifo_isr_header is record
		vector_num:   	integer;
		handler:		address; -- Address of the first instruction
								 -- in the entry's accept body.
								 -- The code emitted for the accept
								 -- body should look like a normal
								 -- Ada procedure.
	end record;

	for cifo_isr_header use record
		vector_num   	at 0  range 0..4  * STORAGE_UNIT - 1;
		handler			at 4  range 0..4  * STORAGE_UNIT - 1;
	end record;

	CIFO_ISR_VECTOR_NUM_OFF:		constant := 0;
	CIFO_ISR_HANDLER_OFF:			constant := 4;

	type cifo_isr_header_ref is access cifo_isr_header;
end v_i_cifo